Skip to content

dstack v0.6.0

Choose a tag to compare

@kvinwang kvinwang released this 28 Sep 12:17
· 164 commits to next since this release
4699c48

dstack 0.6.0 is the first release from the monorepo.

Upgrading from 0.5.x? Read the upgrade guide first: most apps only switch the guest image, but a few guest OS changes can stop an app from starting.

Components

Component Release Image
Guest OS mkosi-os-v0.6.0 os_image_hash: 8409e2a24ea8325f3ea45d7c50622c952a8a4a961ffc139f5d9a81c4e47bd744
KMS kms-v0.6.0 ghcr.io/dstack-tee/dstack-kms:0.6.0
Gateway gateway-v0.6.0 ghcr.io/dstack-tee/dstack-gateway:0.6.0
Verifier verifier-v0.6.0 ghcr.io/dstack-tee/dstack-verifier:0.6.0

Highlights

  • a versioned guest API, dstack.guest.v1, with domain-separated key
    derivation, GPU evidence, and one attestation entry point on every platform.
    The v0 API is frozen at v0.5.11 and keeps working unchanged
  • a unified attestation model for Intel TDX, AMD SEV-SNP, AWS Nitro Enclaves,
    AWS NitroTPM, GCP Confidential VMs, and development simulators
  • canonical event log v2 and manifest-based OS and workload policy
    verification
  • a Debian/mkosi guest OS as the default, reproducible build backend,
    superseding Yocto
  • VMM-managed networking with netd, macvtap, vhost-net multiqueue, and libvirt
    network filters
  • Gateway application health checks, WaveKV v2, simultaneous CVM connections
    to multiple Gateway clusters, and credential-free certificate issuance with
    dns-persist-01 (experimental)
  • local key providers, external attestation root CAs, dm-verity volumes, and
    data disks that return deleted blocks to the host
  • shared authentication across the VMM, Gateway, and KMS administrative APIs
  • a security hardening pass across every component

Upgrade notes

  • Every measurement changes. Register the new os_image_hash on chain
    before deploying 0.6.0 images. The VMM now defaults qemu_hotplug_off to
    true, which changes the ACPI tables and RTMRs of every CVM on its next
    start, whatever its image; update any allowlist that pins MRs, or set it
    back to false on hosts without GPUs (#1387)
  • Apps on the 0.6.0 guest image: pre_launch_script runs under
    set -euo pipefail; a GPU CVM must pass GPU attestation to boot unless
    requirements.gpu_policy.attest_gpu is false; legacy iptables is gone;
    environment variables arrive byte for byte instead of with \n escaped;
    and an encrypted environment that cannot be decrypted stops the boot
  • v1 keys differ from v0 keys. Existing apps keep their keys on the
    unversioned (v0) paths. Moving to v1 GetKey needs an asset migration
    signed by the old key; see docs/guest-api-v1.md. v1 attestations and
    v1-issued RA-TLS certificates need KMS and verifiers 0.5.9 or later
  • SDKs: DstackClient now means DstackClientV1; name DstackClientV0
    to stay on v0. Deep imports of the v0 modules gain a _v0 suffix, and the
    Python v0 client emits a DeprecationWarning
  • Guest agent: EmitEvent always fails; bind app data through
    report_data instead. GetQuote answers on Intel TDX only; use Attest
    elsewhere
  • KMS: Nitro Enclave key release needs nitro_enclave_key_release = true
    (#1303), and the Nitro Enclave device_id is now sha256(PCR4), so
    DstackApp contracts with allowAnyDevice = false must add the new value
    (#1302). Root-key handover moves to the admin listener; turn off
    core.onboard.public_key_handover once every node is upgraded (#1307)
  • Admin APIs fail closed: a KMS or Gateway with its admin API enabled
    but no auth_token or htpasswd_file refuses to start. The VMM's [auth]
    now guards the whole API and web UI
  • Gateway: roll nodes one at a time; 0.5.x and 0.6.0 nodes serve traffic
    but do not sync until every node is upgraded.
    core.debug.insecure_skip_attestation is gone, and a gateway
    without a guest agent no longer starts (#1148). A certificate configured in
    [core.proxy] is ignored; install it with Admin.ImportCert (#1239)
  • VMM: a 0.5.x app that sets key_provider_id cannot boot its 0.5.x
    image on a 0.6.0 VMM; move it to the 0.6.0 image with the host. Upgrade
    netd together with the VMM, and before it on hosts running
    bridge or macvtap VMs (#1145, #1217)
  • Images: component images publish to ghcr.io/dstack-tee/<component>
    (#1222). dstackup digest-pins its default KMS image, so fresh installs
    register a different KMS app id
  • certbot: every renewal uses a new private key; update DANE/TLSA or SPKI
    pins on each renewal

Full changelog: CHANGELOG.md