Commit Graph

23 Commits (638435873cdca9c9c0b9b702c0d02d79028faf28)

Author SHA1 Message Date
A. F. Dudley 638435873c Add port 443 mapping for kind clusters with Caddy ingress
Caddy provides automatic HTTPS with Let's Encrypt, but needs port 443
mapped from the kind container to the host. Previously only port 80 was
mapped.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 03:35:03 -05:00
A. F. Dudley 97a85359ff Fix helpers.py to use Caddy ingress instead of nginx
The helm-charts-with-caddy branch had the Caddy manifest file but was still
using nginx in the code. This change:

- Switch install_ingress_for_kind() to use ingress-caddy-kind-deploy.yaml
- Update wait_for_ingress_in_kind() to watch caddy-system namespace
- Use correct label selector for Caddy ingress controller pods

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 03:22:07 -05:00
A. F. Dudley 86462c940f Fix high-memlock spec to include complete OCI runtime config
The base_runtime_spec for containerd requires a complete OCI spec,
not just the rlimits section. The minimal spec was causing runc to
fail with "open /proc/self/fd: no such file or directory" because
essential mounts and namespaces were missing.

This commit uses kind's default cri-base.json as the base and adds
the rlimits configuration on top. The spec includes all necessary
mounts, namespaces, capabilities, and kind-specific hooks.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 02:12:11 -05:00
A. F. Dudley 87db167d7f Add RuntimeClass support for unlimited RLIMIT_MEMLOCK
The previous approach of mounting cri-base.json into kind nodes failed
because we didn't tell containerd to use it via containerdConfigPatches.

RuntimeClass allows different stacks to have different rlimit profiles,
which is essential since kind only supports one cluster per host and
multiple stacks share the same cluster.

Changes:
- Add containerdConfigPatches to kind-config.yml to define runtime handlers
- Create RuntimeClass resources after cluster creation
- Add runtimeClassName to pod specs based on stack's security settings
- Rename cri-base.json to high-memlock-spec.json for clarity
- Add get_runtime_class() method to Spec that auto-derives from
  unlimited-memlock setting

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 01:58:38 -05:00
A. F. Dudley dd856af2d3 Fix pyright type errors across codebase
- Add pyrightconfig.json for pyright 1.1.408 TOML parsing workaround
- Add NoReturn annotations to fatal() functions for proper type narrowing
- Add None checks and assertions after require=True get_record() calls
- Fix AttrDict class with __getattr__ for dynamic attribute access
- Add type annotations and casts for Kubernetes client objects
- Store compose config as DockerDeployer instance attributes
- Filter None values from dotenv and environment mappings
- Use hasattr/getattr patterns for optional container attributes

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 01:10:36 -05:00
A. F. Dudley 03f9acf869 Add unlimited-memlock support for Kind clusters
Lint Checks / Run linter (push) Failing after 0s Details
Container Registry Test / Run contaier registry hosting test on kind/k8s (push) Failing after 0s Details
Add spec.yml option `security.unlimited-memlock` that configures
RLIMIT_MEMLOCK to unlimited for Kind cluster pods. This is needed
for workloads like Solana validators that require large amounts of
locked memory for memory-mapped files during snapshot decompression.

When enabled, generates a cri-base.json file with rlimits and mounts
it into the Kind node to override the default containerd runtime spec.

Also includes flake8 line-length fixes for affected files.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 20:20:19 -05:00
A. F. Dudley dc36a6564a Fix misleading error message in load_images_into_kind 2026-01-21 19:32:53 -05:00
A. F. Dudley d8da9b6515 Add missing get_kind_cluster function to helpers.py
Fixes ImportError in k8s_command.py that was causing CI failure.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 19:04:46 -05:00
A. F. Dudley 89db6e1e92 Add Caddy ingress and k8s cluster management features
- Add Caddy ingress controller manifest for kind deployments
- Add k8s cluster list command for kind cluster management
- Add k8s_command import and registration in deploy.py
- Fix network section merge to preserve http-proxy settings
- Increase default container resources (4 CPUs, 8GB memory)
- Add UDP protocol support for K8s port definitions
- Add command/entrypoint support for K8s deployments
- Implement docker-compose variable expansion for K8s
- Set ConfigMap defaultMode to 0755 for executable scripts

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 23:14:22 -05:00
David Boreham 37b9500483 Support non-tls ingress for kind (#748)
Publish / Build and publish (push) Successful in 3m2s Details
Smoke Test / Run basic test suite (push) Successful in 4m16s Details
Webapp Test / Run webapp test suite (push) Successful in 11m15s Details
Lint Checks / Run linter (push) Failing after 4s Details
Deploy Test / Run deploy test suite (push) Successful in 3m34s Details
Reviewed-on: https://git.vdb.to/cerc-io/stack-orchestrator/pulls/748
Co-authored-by: David Boreham <david@bozemanpass.com>
Co-committed-by: David Boreham <david@bozemanpass.com>
2024-02-17 01:54:30 +00:00
David Boreham d9bb6b3588 Test Database Stack (#737)
Smoke Test / Run basic test suite (push) Successful in 3m54s Details
Deploy Test / Run deploy test suite (push) Successful in 3m40s Details
Publish / Build and publish (push) Successful in 50s Details
Webapp Test / Run webapp test suite (push) Successful in 2m33s Details
Lint Checks / Run linter (push) Failing after 3s Details
Reviewed-on: https://git.vdb.to/cerc-io/stack-orchestrator/pulls/737
2024-02-15 05:26:29 +00:00
Thomas E Lackey b22c72e715 For k8s, use provisioner-managed volumes when an absolute host path is not specified. (#741)
In kind, when we bind-mount a host directory it is first mounted into the kind container at /mnt, then into the pod at the desired location.

We accidentally picked this up for full-blown k8s, and were creating volumes at /mnt.  This changes the behavior for both kind and regular k8s so that bind mounts are only allowed if a fully-qualified path is specified.  If no path is specified at all, a default storageClass is assumed to be present, and the volume managed by a provisioner.

Eg, for kind, the default provisioner is: https://github.com/rancher/local-path-provisioner

```
stack: test
deploy-to: k8s-kind
config:
  test-variable-1: test-value-1
network:
  ports:
    test:
     - '80'
volumes:
  # this will be bind-mounted to a host-path
  test-data-bind: /srv/data
  # this will be managed by the k8s node
  test-data-auto:
configmaps:
  test-config: ./configmap/test-config
```

Reviewed-on: https://git.vdb.to/cerc-io/stack-orchestrator/pulls/741
Co-authored-by: Thomas E Lackey <telackey@bozemanpass.com>
Co-committed-by: Thomas E Lackey <telackey@bozemanpass.com>
2024-02-14 21:45:01 +00:00
David Boreham 8be1e684e8 Process environment variables defined in compose files (#736)
Reviewed-on: https://git.vdb.to/cerc-io/stack-orchestrator/pulls/736
Co-authored-by: David Boreham <david@bozemanpass.com>
Co-committed-by: David Boreham <david@bozemanpass.com>
2024-02-08 19:41:57 +00:00
David Boreham bfbcfb7904
Volume processing fixes (#729)
Publish / Build and publish (push) Successful in 55s Details
Deploy Test / Run deploy test suite (push) Successful in 2m58s Details
Webapp Test / Run webapp test suite (push) Successful in 2m42s Details
Smoke Test / Run basic test suite (push) Successful in 3m57s Details
2024-02-06 12:32:10 -07:00
Thomas E Lackey 36bb068983
Add ConfigMap test. (#726)
Publish / Build and publish (push) Successful in 1m24s Details
Deploy Test / Run deploy test suite (push) Successful in 2m52s Details
K8s Deploy Test / Run deploy test suite on kind/k8s (push) Failing after 1m3s Details
Webapp Test / Run webapp test suite (push) Successful in 2m40s Details
Smoke Test / Run basic test suite (push) Successful in 4m24s Details
* Add ConfigMap test.

* eof

* Minor tweak

* Trigger test

---------

Co-authored-by: David Boreham <david@bozemanpass.com>
2024-02-05 14:15:11 -06:00
Thomas E Lackey 2fcd416e29
Basic webapp deployer stack. (#722)
Webapp Test / Run webapp test suite (push) Successful in 2m35s Details
Smoke Test / Run basic test suite (push) Successful in 3m46s Details
Publish / Build and publish (push) Successful in 50s Details
Deploy Test / Run deploy test suite (push) Successful in 2m56s Details
2024-02-02 19:05:15 -07:00
Thomas E Lackey 12ec1bec43
Add ConfigMap support for k8s. (#714)
Publish / Build and publish (push) Successful in 50s Details
Deploy Test / Run deploy test suite (push) Successful in 3m7s Details
Webapp Test / Run webapp test suite (push) Successful in 2m38s Details
Smoke Test / Run basic test suite (push) Successful in 3m45s Details
* Minor fixes for deploying with k8s and podman.

* ConfigMap support
2024-01-30 23:09:48 -06:00
David Boreham 1f9653e6f7
Fix kind mode and add k8s deployment test (#704)
* Fix kind mode and add k8s deployment test

* Fix lint errors
2024-01-16 15:55:58 -07:00
David Boreham 113c0bfbf1
Propagate env file for webapp deployment (#669)
Deploy Test / Run deploy test suite (push) Successful in 3m21s Details
K8s Deploy Test / Run deploy test suite (push) Failing after 3m7s Details
Webapp Test / Run webapp test suite (push) Failing after 3m53s Details
Smoke Test / Run basic test suite (push) Successful in 4m7s Details
Publish / Build and publish (push) Successful in 57s Details
2023-11-28 21:14:02 -07:00
David Boreham f6624cb33a
Add image push command (#656)
Publish / Build and publish (push) Successful in 57s Details
Deploy Test / Run deploy test suite (push) Successful in 3m6s Details
K8s Deploy Test / Run deploy test suite (push) Failing after 3m10s Details
Webapp Test / Run webapp test suite (push) Failing after 3m37s Details
Smoke Test / Run basic test suite (push) Successful in 4m8s Details
2023-11-20 20:23:55 -07:00
David Boreham ce587457d7
Add env var support for k8s (#634) 2023-11-08 17:53:46 -07:00
David Boreham 5e91c2224e
kind test stack (#629)
Publish / Build and publish (push) Successful in 58s Details
Deploy Test / Run deploy test suite (push) Successful in 3m7s Details
Webapp Test / Run webapp test suite (push) Failing after 3m37s Details
Smoke Test / Run basic test suite (push) Successful in 4m1s Details
2023-11-08 01:11:00 -07:00
David Boreham 4456e70c93
Rename app -> stack_orchestrator (#625)
Publish / Build and publish (push) Successful in 1m0s Details
Deploy Test / Run deploy test suite (push) Successful in 3m25s Details
Smoke Test / Run basic test suite (push) Successful in 4m21s Details
2023-11-07 00:06:55 -07:00