New Features
Workload CRD (#2195, #2210, #2219, #2222, #2236, #2238, #2251)
Kubetorch now stores workload information in a Kubernetes Workload CRD. This contains metadata for the Kubetorch services, such as labels, paths, images, and can be viewed and managed through standard Kubernetes tools.
To use the latest release, upgrade your kubetorch installation and ensure the CRD is installed.
BYO Manifest for arbitrary K8s resource types (#2133, #2211, #2237)
In release 0.4.0, we introduced bring-your-own (BYO) manifest for deploying custom Kubernetes manifests while maintaining Kubetorch compatible capabilities. In this release, we expand the supported resource types to be arbitrary Kubernetes resource types, in addition to the previously supported Kubetorch resource types. To apply this to new resource types, you will need to specify the pod_template_path parameter when creating the Compute object:
compute = kt.Compute.from_manifest(
manifest=my_custom_manifest,
pod_template_path="spec.workload.template",
)Kt Apply (#2085, #2257)
kt apply is a new CLI command to deploy existing Kubernetes manifests through Kubetorch. This automatically injects the Kubetorch server to the manifest start and supports optional Dockerfile based image setup.
# Apply a deployment manifest
kt apply deployment.yaml
# Apply with Dockerfile for image setup
kt apply deployment.yaml --dockerfile Dockerfile
# Apply with HTTP proxying enabled
kt apply fastapi-deployment.yaml --port 8000 --health-check /healthCode synchronization control (#2228, #2243)
Introduce new parameters sync_dir, remote_dir, and remote_import_path in module initialization for finer grain control over code syncing and remote imports. Use sync_dir to specify a local directory to sync (or set to False to skip module syncing entirely), and use remote_dir and remote_import_path to point to code that already exists on the container (mutually exclusive from sync_dir).
# Sync a specific directory
remote_fn = kt.fn(my_function, sync_dir="./src").to(compute)
# Use code already on container (e.g., from image.copy())
image = kt.Image().copy("./src")
remote_fn = kt.fn(
my_function,
sync_dir=False,
remote_dir="src",
remote_import_path="mymodule"
).to(compute)Improvements
- Kill processes better (#2135)
- Scale data store (#2185)
- Update image to include dockerfile contents upon setup and .to (#2127, #2194)
kt describeto include the ingress if configured (#2191)- Allow setting kt config values to None (#2190)
- Retry connection when hitting a RemoteProtocolError (#2204)
- Split data store helm chart resources (#2216)
- Add configuration for controller uvicorn worker count (#2217)
- Update app http health check params (#2225)
- Hide pod names by default for kt list (#2218)
- Add release namespace for data store deployments (#2248)
- Split up module pointers (#2227)
- Add support for serialization=”none” (#2231)
- Reduce poll interval for faster service readiness detection (#2232)
- Eagerly load callable at subprocess startup (#2234)
- Add callable_name property for modules (#2252)
- Add more helpful logging for rsync errors (#2255)
- Fix a few user facing type check errors (#2256)
Deprecations
- Deprecate image rsync in favor of copy (#2127)
BC-Breaking
- Require rsync 3.2.0+ instead of falling back to manual directory creation
- Refactor teardown method (#2262)
--force/-fflag no longer deletes without confirmation.--forceindicates force deleting the resource, but user will still be prompted with a confirmation if a--yes/-yflag is not provided.
Bug Fixes
- Fix controller connection scaling (#2184)
- Fix noisy websocket error logging during shutdown (#2193)
- Fix rerun errors by appending launch_id (#2223)
- Add markers to support decorating modules (#2235)
- Fix for single-file rsync and dockerfile absolute rsync check (#2241, #2245)
- Fix EADDRINUSE errno check for macOS compatibility (#2265)