806 Commits
Author SHA1 Message Date
Michael Crosby aa8d76b44a rename to container cluster (#2427)
Signed-off-by: michael_crosby <michael_crosby@apple.com>
1.6.1
2026-10-23 13:41:00 -07:00
Noah Thornton 98520f0a64 Infer platform and runtime from OCI image (#2422)
`container run` and `container create` infer os, arch, and runtime
from the image's OCI index, or manifest + config.

Runtime defaults to `container-runtime-<os>` unless `--runtime` is set.

Adds an `imagePlatforms` images service route and bumps
containerization to 0.53.0.
2026-10-22 13:59:07 -07:00
Tamilarasan 834f70a366 Remove SIGWINCH from signal kill set (#1854) 2026-10-22 09:06:32 -07:00
Vincent Peng 1ebb9d07d1 Fix forwarded process signal encoding (#1778)
- Fixes #1876.
- Encode forwarded process signals as signal
  names instead of integer XPC values.
- Preserve Darwin-to-Linux signal semantics for
  foreground signal forwarding.
- Add coverage for the kill request payload and
  forwarded INT, TERM, WINCH, USR1, and USR2
  mappings.
2026-10-22 09:04:15 -07:00
Dmitry Kovba b37ed58ce5 Fix host port conflicts and leftover failed nodes during cluster creation (#2399) 2026-10-21 14:52:01 -07:00
J Logan ca4884f8f3 Build context fix, bump to containerization 0.52.1. (#2415)
- `BuildFSSync.read()` and `info()` resolved a 
  requested path, checked that the result was
  inside the build context, and then opened the
  original path. A symlink replaced between the
  check and the open was followed to its new
  target, which could be outside the context.
-This change opens each requested file by
  walking its path one component at a time from
  a directory descriptor pinned on the context
  root, using `FileDescriptorOps` from
  `containerization`. Symlinks are followed only
  when the target is relative and stays beneath
  the context root. The metadata and the content
  returned to the builder both come from the
  same open descriptor.
- Behavior change: a symlink with an absolute
  target is now rejected by `read()` and `info()`,
  even when the target is inside the context.
  Relative symlinks that stay inside the context
  still work. `walk()`-based transfers are unchanged.
- Dependency: Requires `containerization` 0.50.0
  for its `FileDescriptorOps` API enhancements.
  This change updates the library from 0.52.0
  to 0.52.1.
1.6.0
2026-10-19 14:14:06 -07:00
Kathryn Baldauf 31e3a98e47 Update to latest containerization dependency 0.52.0 (#2407)
Signed-off-by: Kathryn Baldauf <k_baldauf@apple.com>
2026-10-16 18:17:30 -07:00
Dmitry Kovba 0c5427795b Fix the cluster delete command when node containers are missing (#2397) 2026-10-15 17:52:18 -07:00
Aditya Ramani 2449f419d5 Bump to use containerization 0.51.0 (#2396) 2026-10-15 17:19:52 -07:00
i098 1a9d535f54 Fix container log following when the log is empty (#2377)
- Closes #2374.
- `container logs -f` exits when its initial read
  finds an empty log. Skip the empty initial read
  without returning, so follow mode can wait for
  new output.
- Keep the full-file read to preserve existing
  output before following.
- Add a regression test for output appended to
  an initially empty log.
- Leave container machine logs unchanged
  because it has a separate implementation and
  this issue concerns container logs.
2026-10-15 15:28:50 -07:00
bryanmandBryan Mosley 86d31dbd94 Treat a missing log file as empty in container logs (#2393)
- Fixes #2392.
- `ContainersService.logs(id:)` opened `stdio.log` and
  `vminitd.log` eagerly, so either one missing failed the
  whole request. Both are created by `RuntimeLinux` at
  bootstrap, so a container that has never been started
  has neither. And only `RuntimeLinux` writes
  `vminitd.log`, so with another runtime plugin even
  plain `container logs` failed.
- A missing log now reads as empty: it's opened as
  `/dev/null`, with a debug log line. Any other failure
  to open a log still throws.

Co-authored-by: Bryan Mosley <342731628+bryanmosley@users.noreply.github.com>
2026-10-15 14:24:30 -07:00
J Logan 49388b7205 Update container-builder-shim to 0.13.2. (#2394) 2026-10-15 14:06:18 -07:00
dependabot[bot] 22029b0686 ci: bump the github-actions group with 2 updates (#2391)
- Updates actions/upload-artifact from 7.0.1 to 7.0.2
- Updates actions/download-artifact from 8.0.1 to 8.0.2

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-14 15:47:52 -07:00
J Logan b3eb70307a Add DNS aliases and subtree aliases for container network attachments (#2390)
- Closes #457.
- A container can now declare additional DNS names for
  a network attachment with a repeatable `alias` property
  on `--network`, including subtree aliases that match
  every name below a domain.
- With the default domain `test`, this container answers
  to `gateway.test` by its name, to `api.test` by the exact
  alias, and to `web.gateway.test`, `a.b.gateway.test`
  and every other name below `gateway.test` by the
  subtree alias. The motivating case is a gateway container
  in front of a local Kubernetes cluster that answers for
  `*.gateway.test`, with an ingress controller routing on
  the `Host` header.
- An alias is an exact name, or a name with a leading
  dot that matches every name below it. A name without
  a dot gets the default domain, as container names do.
  A subtree alias must be below a name the same
  attachment owns, and exact names are unique across
  all containers, so a container cannot claim another
  container's namespace. The rules for one attachment
  are checked when a container is created, again when
  a stored container starts, and again by the network
  helper when it registers the aliases. See
  `docs/architecture/dns.md` for the design, the
  invariants and the security considerations.
2026-10-14 10:11:00 -07:00
Kathryn Baldauf 17ea964c6c Use a custom entrypoint script for k8s container nodes (#2289)
Signed-off-by: Kathryn Baldauf <k_baldauf@apple.com>
2026-10-13 16:05:29 -07:00
jwhur 7749804d32 Fix minor issues in K8s plugin (#2372) 2026-10-13 15:55:47 -07:00
Dmitry Kovba c3fea8c3d9 Fix built image loading, create command output, and help text in the Kubernetes plugin (#2369) 2026-10-13 15:22:50 -07:00
Kathryn Baldauf aa8b830745 K8s image load fix fqn tagging (#2384)
- The k8s load-image CLI command will issue a
  ctr image tag command in the guest to make
  the fully qualified name of an image available
  when the image has a short name (such as
  when building and testing locally). The ordering 
  of fully qualified name and source image name
  was backwards, causing the command to
  silently fail.

Signed-off-by: Kathryn Baldauf <k_baldauf@apple.com>
2026-10-12 16:51:56 -07:00
J Logan 7f3697804f Fix container image load for sparse images. (#2385)
- Fixes #2383.
- Bumps containerization to 0.50.0 to pick up
  apple/container#961 upon which this fix depends.
2026-10-12 16:31:01 -07:00
jwhur f70ecbb926 Extract ContainerBuild logic into a library (#2370) 2026-10-09 10:20:24 -07:00
J Logan 48f902dc66 CLI test: sync disk after file remove and before clean. (#2366) 2026-10-08 11:20:36 -07:00
jwhur 763aea5bf0 Extract container build and container builder as a CLI plugin (#2298) 2026-10-08 11:14:49 -07:00
Noah Thornton 283d792ba4 Correct coverage scope for unit tests (#2356) 2026-10-07 09:33:48 -07:00
Kathryn Baldauf 6e48b323d3 Fix container k8s examples in command-reference (#2355)
Signed-off-by: Kathryn Baldauf <k_baldauf@apple.com>
2026-10-06 16:27:01 -07:00
Noah Thornton ddc3169cc3 Add a SWIFT_CONFIGURATION_EXTRA hook for extra swift build flags (#2354) 2026-10-06 13:05:17 -07:00
Kathryn Baldauf 6fe55561fd Add support for multi node k8s clusters (#2276)
Signed-off-by: Kathryn Baldauf <k_baldauf@apple.com>
2026-10-06 09:52:58 -07:00
Renlord Yang 175e493a6f Fix container system status false negative under a Seatbelt sandbox. (#2316)
- `launchctl list` does not work as expected in the sandbox.
- Probe with `launchctl print <domain>/<label>` instead,
  which launchd does allow a sandboxed process, and key
  off exit codes: 0 means registered, 113 (ENOSERVICE)
  means not registered, and anything else is an error rather
  than being mistranslated into a negative.
- The probe is advisory in `system status`, so an indeterminate
  answer falls through to the XPC health check, whose success 
  is authoritative.

Signed-off-by: Renlord Yang <renlord@apple.com>
2026-10-05 15:52:37 -07:00
Noah Thornton 8ba7e2a65a Fix coverage generation target (#2353) 2026-10-05 14:53:52 -07:00
Hokila Jan 38fe2f9a4b Skip unreadable entries in image list (#2157)
- Fixes #2149.
- `container image list` currently fails completely when
  one image record references an unreadable or missing
  content blob. Healthy images are not rendered, and
  structured output such as JSON and YAML is unavailable.
- This PR resolves each image independently:
  - healthy images remain visible;
  - unreadable images are reported as warnings;
  - warnings are written to stderr;
  - structured stdout remains valid;
  - the command exits non-zero after rendering a
    partial listing, so automation can detect it.
2026-10-02 13:18:04 -07:00
Michael Zhang 1cd4cb3115 Document build and test targets, and make local test runs self-contained by default (.test-data) (#2288) 2026-10-02 09:42:11 -07:00
J Logan 0a48a1bdbf Remove machine user extension points, update machine docs. (#2322)
- Closes #2321.
- Removes image script and ORAS resource extension
  point handling for container machine user setup.
- Replaces image script resource with hardcoded script.
- Adds more flexible user setup options to
  `container machine`.
- Updates container machine documentation to clearly
  identify convenience-isolation tradeoffs.
2026-09-30 16:57:10 -07:00
Kathryn Baldauf 2ef8aef92a K8s plugin: support no CNI on create (#2277)
Signed-off-by: Kathryn Baldauf <k_baldauf@apple.com>
2026-09-30 15:57:41 -07:00
Hokila Jan dbd5ca0840 Fix k8s list grouping for dual-role control-plane nodes (#2315) 2026-09-29 19:17:13 -07:00
Saehej Kang d5023f4071 [container]: add commit command (#1762)
- Closes #1399.
2026-09-29 14:40:40 -07:00
Hashim Khan f7a75fb9a8 Stop importing Testing from ContainerTestSupport (#2118) 2026-09-29 11:20:32 -07:00
Raj d265d669ec Update plugin error test (#2313) 1.5.0 2026-09-28 16:28:39 -07:00
Kathryn Baldauf 31a069a1c9 K8s Plugin: sanitize kubeconfig values from guest before merging with host kubeconfig (#2310)
Signed-off-by: Kathryn Baldauf <k_baldauf@apple.com>
2026-09-28 14:47:39 -07:00
jwhur 6fba624647 Remove PLUGINS section from help message (#2309) 2026-09-28 13:14:07 -07:00
Raj 2e23485f62 Better error message for unknown commands (#2311) 2026-09-28 12:09:51 -07:00
Kathryn Baldauf 4a7d861524 Update to latest containerization@0.47.0 (#2301)
Signed-off-by: Kathryn Baldauf <k_baldauf@apple.com>
2026-09-24 17:14:52 -07:00
Andrey Maltsev eafe6b8b31 fix(k8s): use the node's configured iptables backend for node prep (#2145) 2026-09-24 11:16:24 -07:00
Daniel Syauqi dc276ee5f3 Run commands when image entrypoint is empty (#2296) 2026-09-22 16:36:20 -07:00
rishabh b5eb9e9a25 Sync command reference with current CLI options (#2265) 2026-09-22 09:50:17 -07:00
Kathryn Baldauf be974a3ea3 Remove k8s start command for now (#2290)
Signed-off-by: Kathryn Baldauf <k_baldauf@apple.com>
2026-09-21 16:54:06 -07:00
jwhur 09d8e6aeea Fix Globber dropping directory contents under a symlinked ancestor (#2252) 2026-09-21 14:01:26 -07:00
Di Warachet S. 4e7dce66ad fix(k8s): correct k8s control plane components version using the user specified node image version (#2271) 2026-09-18 12:45:06 -07:00
Kathryn Baldauf 57f0b9392b K8s plugin: Support custom CNI manifest (#2254)
Signed-off-by: Kathryn Baldauf <k_baldauf@apple.com>
2026-09-15 09:36:17 -07:00
Saiyam Pathak 55437109ad docs: use an existing kindest/node tag in the k8s node image example (#2257) 2026-09-11 15:35:24 -07:00
Eric Ernst 33ebc8ae67 forwarder: close backend channel immediately if frontend closes (#2260)
Signed-off-by: Eric Ernst <eric_ernst@apple.com>
2026-09-11 12:08:27 -07:00
Raj b61450b6e8 Fix container egress loss after localhost DNS changes (#2256) 2026-09-10 19:00:07 -07:00