# Matchbox Notable changes between releases. ## Latest ## v0.11.0 * Update butane from v0.17.0 to v0.18.0 ([#1079](https://github.com/poseidon/matchbox/pull/1079)) * Add support for `fcos` [v1.5.0](https://coreos.github.io/butane/config-fcos-v1_5/) Butane Configs * Add support for `flatcar` [v1.1.0](https://coreos.github.io/butane/config-flatcar-v1_1/) Butane Configs * Render Ignition as Ignition spec [v3.4.0](https://coreos.github.io/ignition/configuration-v3_4/) ## v0.10.0 * Remove support for Ignition v0.35.0 (Ignition spec v2.x) * Remove support for Container Linux Configs (**action required**) * Container Linux Configs were a YAML format that rendered to Ignition (spec v2.x) * Flatcar Linux now supports Ignition v2 (spec v3.x) * Butane is a suitable YAML format that renders Ignition v2 (spec v3.x) * Upgrade Ignition from v0.35.0 (spec v2.x) to v2.14.0 (spec v3.x) * Update Go version (v1.20.2) and alpine base image (v3.17.3) * Add limited support for Matchbox rendering Butane configs ([#997](https://github.com/poseidon/matchbox/pull/997)) ([docs](https://matchbox.psdn.io/ignition/#matchbox-rendering)) * Recommend writing Butane via external tools (**action required**) * For Terraform, use [poseidon/terraform-provider-ct](https://github.com/poseidon/terraform-provider-ct) * For a CLI, use [`butane`](https://github.com/coreos/butane) * Parse Ignition and render forward to Ignition v2 (spec v3.3) * Ignition is [forward](https://github.com/coreos/ignition/blob/main/config/v3_3/config.go#L61) compatible (e.g. a `v3.1` spec can be rendered as `v3.3` safely) If you still template Container Linux Configs via Matchbox, [migrate](https://www.flatcar.org/docs/latest/provisioning/config-transpiler/) to Butane by prepending: ```yaml variant: flatcar version: 1.0.0 ``` ## v0.9.1 * Add dependabot Go module update automation ([#833](https://github.com/poseidon/matchbox/pull/833)) * Build multi-arch container images (amd64, arm64) ([#823](https://github.com/poseidon/matchbox/pull/823)) * Update Go version (v1.18.4) and alpine base image (v3.16.1) * Move `dnsmasq` container image to its own [repo](https://github.com/poseidon/dnsmasq) ([#840](https://github.com/poseidon/matchbox/pull/840)) * Deprecate rendering Container Linux Configs * Please migrate to serving CoreOS Ignition directly * Use tools like [poseidon/ct](https://github.com/poseidon/terraform-provider-ct) or [butane](https://coreos.github.io/butane/getting-started/) to validate and convert a Butane Config (`focs` or `flatcar`) to Ignition (for Matchbox to serve) ### Docs/Examples * Migrate docs website to GitHub Pages ([#976](https://github.com/poseidon/matchbox/pull/976)) * Update Fedora CoreOS images and configuration ([#972](https://github.com/poseidon/matchbox/pull/972)) * Update Fedora CoreOS initrd karg for UEFI ([#978](https://github.com/poseidon/matchbox/pull/978)) * Update Flatcar Linux examples to use Ignition v3.3.0 ([#980](https://github.com/poseidon/matchbox/pull/980)) ## v0.9.0 * Refresh docs and examples for Fedora CoreOS and Flatcar Linux ([#815](https://github.com/poseidon/matchbox/pull/815), [#816](https://github.com/poseidon/matchbox/pull/816)) * Update Kubernetes manifest examples ([#791](https://github.com/poseidon/matchbox/pull/791), [#817](https://github.com/poseidon/matchbox/pull/817)) * Update Matchbox container image publishing ([#795](https://github.com/poseidon/matchbox/pull/795)) * Publish Matchbox images from internal infra to Quay (`quay.io/poseidon/matchbox`) * Update Go version from v1.13.4 to v1.14.9 * Update base image from `alpine:3.10` to `alpine:3.12` ([#784](https://github.com/poseidon/matchbox/pull/784)) * Include `contrib/k8s` in release tarballs ([#788](https://github.com/poseidon/matchbox/pull/788)) * Remove outdated systemd units ([#817](https://github.com/poseidon/matchbox/pull/817)) * Remove RPM spec file (Copr publishing stopped in v0.6) ## v0.8.3 * Publish docs to [https://matchbox.psdn.io](https://matchbox.psdn.io/) ([#769](https://github.com/poseidon/matchbox/pull/769)) * Update Go version from v1.11.7 to v1.13.4 ([#766](https://github.com/poseidon/matchbox/pull/766), [#770](https://github.com/poseidon/matchbox/pull/770)) * Update container image base from `alpine:3.9` to `alpine:3.10` ([#761](https://github.com/poseidon/matchbox/pull/761)) * Include `get-fedora-coreos` convenience script ([#763](https://github.com/poseidon/matchbox/pull/763)) * Remove Kubernetes provisioning examples ([#759](https://github.com/poseidon/matchbox/pull/759)) * Remove rkt tutorials and docs ([#765](https://github.com/poseidon/matchbox/pull/765)) ## v0.8.1 - v0.8.2 Releases `v0.8.1` and `v0.8.2` were not built cleanly * Release tags and container images have been removed * Caused by go get golint (module-aware) mutating `go.mod` on Travis (see [#775](https://github.com/poseidon/matchbox/pull/775), [#777](https://github.com/poseidon/matchbox/pull/777)) ## v0.8.0 * Transfer Matchbox repo from coreos to poseidon GitHub Org * Publish container images at [quay.io/poseidon/matchbox](https://quay.io/repository/poseidon/matchbox) * Build Matchbox with Go v1.11.7 for images and binaries * Update container image base from alpine:3.6 to alpine:3.9 * Render Container Linux Configs as Ignition v2.2.0 * Validate raw Ignition configs with the v2.2 spec (warn-only) * Fix warnings that v2.2 configs are too new Note: Release signing key [has changed](https://github.com/poseidon/matchbox/blob/v0.8.0/Documentation/deployment.md) with the project move. ### Examples * Update Kubernetes example clusters to v1.14.1 (Terraform-based) ## v0.7.1 (2018-11-01) * Add `kernel_args` variable to the terraform bootkube-install cluster definition * Add `get-flatcar` helper script * Add optional TLS support to read-only HTTP API * Build Matchbox with Go 1.11.1 for images and binaries ### Examples * Upgrade Kubernetes example clusters to v1.10.0 (Terraform-based) * Upgrade Kubernetes example clusters to v1.8.5 ## v0.7.0 (2017-12-12) * Add gRPC API endpoints for managing generic (experimental) templates * Update Container Linux config transpiler to v0.5.0 * Update Ignition to v0.19.0, render v2.1.0 Ignition configs * Drop support for Container Linux versions below 1465.0.0 (breaking) * Build Matchbox with Go 1.8.5 for images and binaries * Remove Profile `Cmdline` map (deprecated in v0.5.0), use `Args` slice instead * Remove pixiecore support (deprecated in v0.5.0) * Remove `ContextHandler`, `ContextHandlerFunc`, and `NewHandler` from the `matchbox/http` package. ### Examples / Modules * Upgrade Kubernetes example clusters to v1.8.4 * Kubernetes examples clusters enable etcd TLS * Deploy the Container Linux Update Operator (CLUO) to coordinate reboots of Container Linux nodes in Kubernetes clusters. See the cluster [addon docs](Documentation/cluster-addons.md). * Kubernetes examples (terraform and non-terraform) mask locksmithd * Terraform modules `bootkube` and `profiles` (Kubernetes) mask locksmithd ## v0.6.1 (2017-05-25) * Improve the installation documentation * Move examples/etc/matchbox/cert-gen to scripts/tls * Build Matchbox with Go 1.8.3 for images and binaries ### Examples * Upgrade self-hosted Kubernetes cluster examples to v1.6.4 * Add NoSchedule taint to self-hosted Kubernetes controllers * Remove static Kubernetes and rktnetes cluster examples ## v0.6.0 (2017-04-25) * New [terraform-provider-matchbox](https://github.com/coreos/terraform-provider-matchbox) plugin for Terraform users! * New hosted [documentation](https://coreos.com/matchbox/docs/latest) on coreos.com * Add `ProfileDelete`, `GroupDelete`, `IgnitionGet` and `IgnitionDelete` gRPC endpoints * Build matchbox with Go 1.8 for container images and binaries * Generate code with gRPC v1.2.1 and matching Go protoc-gen-go plugin * Update Ignition to v0.14.0 and coreos-cloudinit to v1.13.0 * Update "fuze" docs to the new name [Container Linux Configs](https://coreos.com/os/docs/latest/configuration.html) * Remove `bootcmd` binary from release tarballs ### Examples * Upgrade Kubernetes v1.5.5 (static) example clusters * Upgrade Kubernetes v1.6.1 (self-hosted) example cluster * Use etcd3 by default in all clusters (remove etcd2 clusters) * Add Terraform examples for etcd3 and self-hosted Kubernetes 1.6.1 ## v0.5.0 (2017-01-23) * Rename project to CoreOS `matchbox`! * Add Profile `args` field to list kernel args * Update [Fuze](https://github.com/coreos/container-linux-config-transpiler) and [Ignition](https://github.com/coreos/ignition) to v0.11.2 * Switch from `golang.org/x/net/context` to `context` * Deprecate Profile `cmd` field map of kernel args * Deprecate Pixiecore support * Drop build support for Go 1.6 #### Rename * Move repo from github.com/coreos/coreos-baremetal to github.com/coreos/matchbox * Rename `bootcfg` binary to `matchbox` * Rename `bootcfg` packages to `matchbox` * Publish a `quay.io/coreos/matchbox` container image. The `quay.io/coreos/bootcfg` image will no longer be updated. * Rename environment variable prefix from `BOOTCFG*` to `MATCHBOX*` * Change config directory to `/etc/matchbox` * Change default `-data-path` to `/var/lib/matchbox` * Change default `-assets-path` to `/var/lib/matchbox/assets` #### Examples * Upgrade Kubernetes v1.5.1 (static) example clusters * Upgrade Kubernetes v1.5.1 (self-hosted) example cluster * Switch Kubernetes (self-hosted) to run flannel as pods * Combine rktnetes Ignition into Kubernetes static cluster #### Migration * binary users should install the `matchbox` binary (see [installation](Documentation/deployment.md)) * rkt/docker users should start using `quay.io/coreos/matchbox` (see [installation](Documentation/deployment.md)) * RPM users should uninstall bootcfg and install matchbox (see [installation](Documentation/deployment.md)) * Move `/etc/bootcfg` configs and certificates to `/etc/matchbox` * Move `/var/lib/bootcfg` data to `/var/lib/matchbox` * See the new [contrib/systemd](contrib/systemd) service examples * Remove the old `bootcfg` user if you created one ## v0.4.2 (2016-12-7) #### Improvements * Add RPM packages to Copr * Fix packaged `contrib/systemd` units * Update Go version to 1.7.4 #### Examples * Upgrade Kubernetes v1.4.6 (static manifest) example clusters * Upgrade Kubernetes v1.4.6 (rktnetes) example clusters * Upgrade Kubernetes v1.4.6 (self-hosted) example cluster ## v0.4.1 (2016-10-17) #### Improvements * Add ARM and ARM64 release architectures (#309) * Add guide for installing bootcfg on CoreOS (#306) * Improvements to the bootcfg cert-gen script (#310) #### Examples * Add Kubernetes example with rkt container runtime (i.e. rktnetes) * Upgrade Kubernetes v1.4.1 (static manifest) example clusters * Upgrade Kubernetes v1.4.1 (rktnetes) example clusters * Upgrade Kubernetes v1.4.1 (self-hosted) example cluster * Add etcd3 example cluster (PXE in-RAM or install to disk) * Use DNS names (instead of IPs) in example clusters (except bootkube) ## v0.4.0 (2016-07-21) #### Features * Add/improve rkt, Docker, Kubernetes, and binary/systemd deployment docs * TLS Client Authentication: * Add gRPC API TLS and TLS client-to-server authentication (#140) * Enable gRPC API by providing a TLS server `-cert-file` and `-key-file`, and a `-ca-file` to authenticate client certificates * Provide the `bootcmd` tool a TLS client `-cert-file` and `-key-file`, and a `-ca-file` to verify the server identity. * Improvements to Ignition Support: * Allow Fuze YAML template files for Ignition 2.0.0 (#141) * Stop requiring Ignition templates to use file extensions (#176) * Logging Improvements: * Add structured logging with Logrus (#254, #268) * Log requests for bootcfg assets (#214) * Show `bootcfg` message at the home path `/` * Fix http package log messages (#173) * Templating: * Allow query parameters to be used as template variables as `{{.request.query.foo}}` (#182) * Support nested maps in responses from the "env file" metadata endpoint (#84) * Error when a template is rendered with variables which are missing a referenced key. Previously, missing lookups defaulted to "no value" (#210) * gRPC API * Add DialTimeout to gRPC client config (#273) * Add IgnitionPut and Close to the client (#160,#193) #### Changes * gRPC API requires TLS client authentication * Replace Ignition YAML templates with Fuze templates - Fuze formalizes the transform from Fuze configs (YAML) to Ignition 2.0.0 (JSON) - [Migrate templates from v0.3.0](Documentation/ignition.md#migration-from-v030) - Require CoreOS 1010.1.0 or newer - Drop support for Ignition v1 format * Replace template variable `{{.query}}` with `{{.request.raw_query}}` #### Examples * Kubernetes * Upgrade Kubernetes v1.3.0 (static manifest) example clusters * Add Kubernetes v1.3.0-beta.2 (self-hosted) example cluster * Mount /etc/resolv.conf into host kubelet for skydns and pod DNS lookups (#237,#260) * Fix a bug in the k8s example k8s-certs@.service file check (#156) * Avoid systemd dependency failures by restarting components (#257,#274) * Verify Kubernetes v1.2.4 and v1.3.0 clusters pass conformance tests (#71,#265) * Add Torus distributed storage cluster example (PXE boot) * Add `create-uefi` subcommand to `scripts/libvirt` for UEFI/GRUB testing * Install CoreOS to disk from a cached copy via bootcfg baseurl (#228) * Remove 8.8.8.8 from networkd example Ignition configs (#184) * Match machines by MAC address in examples to simplify networkd device matching (#209) * With rkt 1.8+, you can use `rkt gc --grace-period=0` to cleanup rkt IP assignments in examples. The `rkt-gc-force` script has been removed. ## v0.3.0 (2016-04-14) #### Features * Add server library package for implementing servers * Add initial gRPC client/server and a CLI tool - Allow listing, viewing, and creating Groups and Profiles * Add initial Grub net boot support examples * Add detached OpenPGP signature endpoints (`.sig`) * Document deployment as a binary with systemd * Upgrade from Go 1.5.3 to Go 1.6.1 (#139) #### Changes * Profiles - Move Profiles to JSON files under `/var/lib/bootcfg/profiles` - Rename `Spec` to `Profile` (#104) * Groups - Move Groups to JSON files under `/var/lib/bootcfg/groups` - Require Group metadata to be valid JSON - Rename Group field `spec` to `profile` - Rename Group field `require` to `selector` (#147) * Allow asset serving to be disabled with `-assets-path=""` (#118) * Allow `selector` key/value pairs to be used in Ignition and Cloud config templates (#64) * Change default `-data-path` to `/var/lib/bootcfg` (#132) * Change default `-assets-path` to `/var/lib/bootcfg/assets` (#132) * Change the default assets download location to `examples/assets` * Stop parsing Groups from the `-config` YAML file. Remove the flag. * Remove HTTP `/spec/id` JSON endpoint #### Examples * Convert all Cloud-Configs to Ignition * Kubernetes * Upgraded Kubernetes examples to v1.2.0 (#122) * Run Heapster service by default (#142) * Example multi-node Kubernetes cluster installed to disk * Example multi-node etcd cluster installed to disk * Example which PXE boots with or without a root partition * Setup fleet in multi-node example clusters ## v0.2.0 (2016-02-09) #### Features * Render Ignition config and cloud-configs as Go templates * Allow writing Ignition configs as YAML configs. Render as JSON for machines. * Add ASCII armored detached OpenPGP signature endpoints (`.asc`) - Enable signing by providing a `-key-ring-path` with a signing key and setting `BOOTCFG_PASSPHRASE` if needed * Add `metadata` endpoint which matches machines to custom metadata * Add `metadata` to group definitions in `config.yaml` #### Changes * Require the `-config` flag if the default file path doesn't exist * Normalize user-defined MAC address tags * Rename flag `-images-path` to `-assets-path` * Rename endpoint `/images` to `/assets` #### New Examples * Example TLS-authenticated Kubernetes cluster with rkt and CNI * Example TLS-authenticated Kubernetes cluster with Docker * Example custom metadata agent with Ignition, fetches metadata on boot and writes it to `/run/metadata/bootcfg` * Example CoreOS install to disk with Ignition * Update etcd cluster examples to use Ignition, rather than cloud-config. ## v0.1.0 (2016-01-08) Initial release of the coreos-baremetal Config Service. #### Features * Match machines based on hardware attributes or free-form tag matchers * Render boot configs (kernel, initrd), [Ignition](https://coreos.com/ignition/docs/latest/what-is-ignition.html) configs, and [Cloud-Init](https://github.com/coreos/coreos-cloudinit) configs * Support for PXE, iPXE, and Pixiecore network boot environments