Skip to content
This repository was archived by the owner on Aug 19, 2023. It is now read-only.

Latest commit

 

History

History
807 lines (542 loc) · 30.9 KB

CHANGELOG.md

File metadata and controls

807 lines (542 loc) · 30.9 KB

Welcome to the v0.3.0-alpha.1 release of Sidero!
This is a pre-release of Sidero

Please try out the release binaries and report any issues at https://github.com/talos-systems/sidero/issues.

ServerClass any and Environment default

Sidero now creates ServerClass any which matches all servers.

Environment default is created which will supply Talos release that Sidero was built with, as well as default kernel flags.

Boot from Disk Methods

If the server is configured to PXE boot by default, it might hit the Sidero iPXE server after Talos install, so Sidero has to force the server to boot from disk.

Sidero 0.2 supports default method via iPXE exit command, but this command doesn't always work (details).

Sidero 0.3 adds support for two additional methods:

  • http-404 force HTTP 404 response from iPXE server
  • ipxe-sanboot uses sanboot command to boot from the first disk

Variable SIDERO_CONTROLLER_MANAGER_BOOT_FROM_DISK_METHOD controls this setting.

Install and Upgrade Variables

Some aspects of Sidero installation can now be controlled via environment variables or clusterctl variables.

IPMI Discovery and Automatic Setup

Sidero agent by default discovers BMC (IPMI) endpoint when it first runs on the server and provisions user for Sidero automatically. This feature enables completely automated server and IPMI discovery on the agent boot. Variable SIDERO_CONTROLLER_MANAGER_AUTO_BMC_SETUP can be used to disable this feature during install or upgrade of Sidero.

Additionally Sidero supports storing IMPI credentials in Kubernetes secrets referencing them from the Server object.

iPXE script

iPXE image delivered by Sidero (either ipxe.efi or undionly.kpxe) now contains embedded iPXE script to access Sidero iPXE server. This change allows to simplify DHCP server setup to return only iPXE image without any additional ifs.

Label Selector support in ServerClass

ServerClasses now support Kubernetes label selectors: Servers can be selected based on their labels.

metal-controller-manager External Ports Change

Component metal-metadata-server was merged into metal-controller-manager, and three separate HTTP endpoints were merged into one endpoint on port :8081:

  • iPXE server (which used to be on port 8081)
  • internal gRPC server (Sidero agent uses it to talk back to Sidero service), previously was 50001
  • metadata server endpoint (used to be separate deployment and service, docs used port 9091)

Support for arm64

All components are now capable of running on arm64, including Rasberry Pi 4.

Sidero can provision amd64 and arm64 nodes from any platform. Only UEFI boot is supported for arm64.

Note: Upstream CAPI includes kube-rbac-proxy component which is not compatible with arm64 at the moment of this writing. A workaround is to patch the deployment to bump the kube-rbac-proxy image from v0.4.1 to v0.8.0.

Contributors

  • Andrey Smirnov
  • Alexey Palazhchenko
  • Spencer Smith
  • Artem Chernyshev
  • Andrew Rynhard
  • Brandon Nason
  • Matt Zahorik
  • bzub

Changes

45 commits

  • d51fda5 release(v0.3.0-alpha.1): prepare release
  • dcc3fde feat: add label selector to serverclass
  • 3caa6f5 chore: fix markdown linting
  • a792890 feat: provide several options to force boot from disk via iPXE
  • 1e8096e docs: add Mermaid
  • c240381 feat: bump default Talos version to v0.10.2
  • 0a50888 docs: move to standardized template
  • 4a1183b feat: ship Environment "default"
  • 2e8c1ed chore: fix a few linter warnings
  • 6bcf9a8 chore: bump dependencies via dependabot
  • 4c0b3de docs: clarify docs around endpoints and metadata server
  • 990263a feat: merge Sidero HTTP endpoints under a single port
  • 5266a76 chore: reduce bootstrap node resources in Sfyra
  • 7f3b4b8 fix: remove kube-rbac-proxy
  • bfa3cd9 chore: re-sign the .drone.yml file
  • cf383ab chore: use release-tool to generate release notes
  • 056f8c2 release(v0.3.0-alpha.0): prepare release
  • ca75eb4 fix: back down resource requests
  • 3a6c5b9 chore: parse "boolean" variables
  • 148e228 chore: bump dependencies
  • db28ed3 chore: allow building with debug handlers
  • 2cdde00 test: fix the Environment args to support UEFI boot
  • d15a960 chore: add golangci-lint configuration
  • b3afd17 feat: ship ServerClass "any"
  • 94ff33b feat: enable auto-setup of BMC
  • 52647f9 docs: fix install disk name in the examples
  • 44eaa7d feat: inject iPXE script into the iPXE binaries
  • 1659b96 docs: fix typo
  • fb04b24 chore: fix make help command
  • f8bc9b1 test: add missing empty tests
  • b17f370 test: port improvements from Talos
  • c43f9ec test: run unit tests on CI, skip broken
  • 45cb973 chore: document Makefile target
  • 8e12ab9 chore: disable dependabot rebases
  • 4267ed7 chore: update dependecies
  • 4aae477 chore: add dependabot config
  • 1e33dcd feat: pull the Sidero configuration as clusterctl variables
  • 23c75e4 docs: add guide for upgrades
  • c9aca48 docs: fix the docs around CONTROL_PLANE_ENDPOINT
  • 37e4ab7 fix: remove erroneous wg.Add in environment controller
  • 74d9bf9 feat: add an option to reference IPMI creds via the secret refs
  • 0613b8f feat: pull in new version of go-smbios for UUID endiannes fix
  • f6ca6e8 feat: build Sidero for amd64 and arm64, support arm64 in the agent
  • 8960225 chore: improve build system
  • a20fcf9 docs: create v0.2 docs and add note about specifying TALOS_VERSION

Changes since v0.3.0-alpha.0

16 commits

  • d51fda5 release(v0.3.0-alpha.1): prepare release
  • dcc3fde feat: add label selector to serverclass
  • 3caa6f5 chore: fix markdown linting
  • a792890 feat: provide several options to force boot from disk via iPXE
  • 1e8096e docs: add Mermaid
  • c240381 feat: bump default Talos version to v0.10.2
  • 0a50888 docs: move to standardized template
  • 4a1183b feat: ship Environment "default"
  • 2e8c1ed chore: fix a few linter warnings
  • 6bcf9a8 chore: bump dependencies via dependabot
  • 4c0b3de docs: clarify docs around endpoints and metadata server
  • 990263a feat: merge Sidero HTTP endpoints under a single port
  • 5266a76 chore: reduce bootstrap node resources in Sfyra
  • 7f3b4b8 fix: remove kube-rbac-proxy
  • bfa3cd9 chore: re-sign the .drone.yml file
  • cf383ab chore: use release-tool to generate release notes

Changes from talos-systems/cluster-api-bootstrap-provider-talos

4 commits

  • 63b7459 release(v0.2.0-alpha.12): prepare release
  • f59baf5 fix: back down resource requests
  • 92f42c4 fix: ensure secrets are deleted when cluster is dropped
  • 2487307 chore: rework build, move to ghcr.io, build for arm64/amd64

Changes from talos-systems/cluster-api-control-plane-provider-talos

3 commits

  • 579303c release(v0.1.0-alpha.12): prepare release
  • e0c38b3 fix: update resources for deployment
  • fe29dfd fix: use Talos API client correctly (wrapped version)

Changes from talos-systems/go-blockdevice

9 commits

  • 1d830a2 fix: revert mark the EFI partition in PMBR as bootable
  • bec914f fix: mark the EFI partition in PMBR as bootable
  • 776b37d feat: add options to probe disk by various sysblock parameters
  • bb3ad73 fix: align partition start to physical sector size
  • 8f976c2 feat: replace exec.Command with go-cmd module
  • 1cf7f25 fix: properly handle no child processes error from cmd.Wait
  • 04a9851 feat: implement luks encryption provider
  • b0375e4 feat: add an option to open block device with exclusive flock
  • 5a1c7f7 refactor: add devname into gpt.Partition, refactor probe package

Changes from talos-systems/go-debug

4 commits

Changes from talos-systems/go-kmsg

2 commits

Changes from talos-systems/go-procfs

2 commits

  • 8cbc42d feat: provide an option to overwrite some args in AppendAll
  • 24d06a9 refactor: remove talos kernel default args

Changes from talos-systems/go-retry

3 commits

  • 7885e16 feat: add ExpectedErrorf
  • 3d83f61 feat: deprecate UnexpectedError
  • b9dc1a9 feat: add support for context.Context in Retry

Changes from talos-systems/go-smbios

3 commits

  • d3a32be fix: return UUID in middle endian only on SMBIOS >= 2.6
  • fb425d4 feat: add memory device
  • 0bb4f96 feat: add physical memory array

Dependency Changes

  • github.com/go-logr/logr ee2de8da5be6 -> v0.4.0
  • github.com/hashicorp/go-multierror v1.1.0 -> v1.1.1
  • github.com/onsi/ginkgo v1.15.0 -> v1.16.2
  • github.com/onsi/gomega v1.10.1 -> v1.12.0
  • github.com/stretchr/testify v1.7.0 new
  • github.com/talos-systems/cluster-api-bootstrap-provider-talos v0.2.0-alpha.11 -> v0.2.0-alpha.12
  • github.com/talos-systems/cluster-api-control-plane-provider-talos v0.1.0-alpha.11 -> v0.1.0-alpha.12
  • github.com/talos-systems/go-blockdevice f2728a581972 -> 1d830a25f64f
  • github.com/talos-systems/go-debug v0.2.0 new
  • github.com/talos-systems/go-kmsg v0.1.0 new
  • github.com/talos-systems/go-procfs a82654edcec1 -> 8cbc42d3dc24
  • github.com/talos-systems/go-retry v0.2.0 -> v0.3.0
  • github.com/talos-systems/go-smbios 80196199691e -> d3a32bea731a
  • github.com/talos-systems/talos/pkg/machinery 1d8e9674a91b -> 8d73bc5999b4
  • go.uber.org/zap v1.14.1 -> v1.16.0
  • golang.org/x/mod v0.4.0 new
  • golang.org/x/net 0714010a04ed new
  • golang.org/x/sync 67f06af15bc9 -> 036812b2e83c
  • golang.org/x/sys 489259a85091 -> 0981d6026fa6
  • golang.org/x/tools 2dba1e4ea05c new
  • google.golang.org/grpc v1.36.0 -> v1.37.1
  • google.golang.org/protobuf v1.26.0 new

Previous release can be found at v0.2.0

v0.3.0-alpha.0 (2021-05-13)

Chore

  • parse "boolean" variables
  • bump dependencies
  • allow building with debug handlers
  • add golangci-lint configuration
  • fix make help command
  • document Makefile target
  • disable dependabot rebases
  • update dependecies
  • add dependabot config
  • improve build system

Docs

  • fix install disk name in the examples
  • fix typo
  • add guide for upgrades
  • fix the docs around CONTROL_PLANE_ENDPOINT
  • create v0.2 docs and add note about specifying TALOS_VERSION

Feat

  • ship ServerClass "any"
  • enable auto-setup of BMC
  • inject iPXE script into the iPXE binaries
  • pull the Sidero configuration as clusterctl variables
  • add an option to reference IPMI creds via the secret refs
  • pull in new version of go-smbios for UUID endiannes fix
  • build Sidero for amd64 and arm64, support arm64 in the agent

Fix

  • back down resource requests
  • remove erroneous wg.Add in environment controller

Test

  • fix the Environment args to support UEFI boot
  • add missing empty tests
  • port improvements from Talos
  • run unit tests on CI, skip broken

v0.2.0 (2021-04-09)

Release

  • v0.2.0: prepare release

v0.2.0-beta.0 (2021-04-08)

Chore

  • use common 'setup-ci' function

Feat

  • add support for DNS resolution in the agent

Fix

  • break the potential endless reconcile loop of ServerClasses
  • don't marshal the machine configuration via machinery package

Release

  • v0.2.0-beta.0: prepare release

Test

  • drop installer image from the server patch

v0.2.0-alpha.1 (2021-04-06)

v0.2.0-alpha.0 (2021-04-06)

Docs

  • update bootstrapping guide
  • setup google analytics
  • add IPMI info, fix links, update environment
  • add note on installation disk
  • fix typo on Server Classes page
  • describe the command to install talosctl in the bootstrap guide

Feat

  • update Talos and machinery to 0.9.1
  • update sidero to use newer talos
  • serve assets from TFTP folder in IPXE HTTP server
  • bump talos to 0.8.0 release

Fix

  • log retry errors
  • add kubernetes version to cluster template
  • prevent server orphaning

Release

  • v0.2.0-alpha.0: prepare release

Test

  • enable control plane scale down test

v0.1.0 (2021-01-15)

Fix

  • prevent server orphaning

Release

  • v0.1.0: prepare release

Test

  • fix test flakiness on workers scale down test

v0.1.0-beta.0 (2020-12-23)

Chore

  • bump versions of packages used in the build
  • fix analytics
  • bump google analytics plugin

Docs

  • update local Sfyra docs
  • improve docs on metadata and environments
  • add flow charts for PXE and installation
  • add CRD documentation
  • clarify cluster template environment variables
  • clarify process of fetching talosconfig

Feat

  • bump Talos to 0.8.0-beta.0
  • send heartbeat from agent while wipe is in progress
  • align default subnets with Talos

Fix

  • overwrite kernel args from --extra-agent-kernel-args

Release

  • v0.1.0-beta.0: prepare release

Test

  • add simulated power management failures in testing mode
  • add a test to deploy and destroy workload cluster

v0.1.0-alpha.12 (2020-12-02)

Feat

  • rework binding between Servers and MetalMachines

Release

  • v0.1.0-alpha.12: prepare release

v0.1.0-alpha.11 (2020-11-30)

Docs

  • fix typo in asset URLs
  • fix patching example

Fix

  • bump resource limits for the sidero pods
  • add timeout to retry wipe IPMI commands (PXE + powercycle)

Refactor

  • unify power management under ServerController
  • remove dependency on talos Go module

Release

  • v0.1.0-alpha.11: prepare release

v0.1.0-alpha.10 (2020-11-17)

Chore

  • bump Talos package dependency to 0.7-beta.1

Feat

  • boot servers via PXE only once by default
  • allow for extra kernel args in agent environment
  • add power status to servers
  • don't power off the server in discovery agent
  • make "insecure-wipe" default, use new fast wipe method

Fix

  • add info log when no servers in serverclass

Refactor

  • use GetDisks from blockdevice library
  • add ErrNoServersInServerClass

Release

  • v0.1.0-alpha.10: prepare release

v0.1.0-alpha.9 (2020-11-10)

Fix

  • update pkgs
  • ignore missing partition error

Release

  • v0.1.0-alpha.9: prepare release

v0.1.0-alpha.8 (2020-11-07)

Chore

  • fix docker login
  • move to ghcr.io

Docs

  • fix typos in bootstrap guides
  • update bootstrap docs links
  • add note around server acceptance

Feat

  • add option for insecure wipe

Release

  • v0.1.0-alpha.8: prepare release

v0.1.0-alpha.7 (2020-10-31)

Docs

  • update site URL and add robots.txt
  • add a metadata section
  • expand server acceptance doc
  • add non-UEFI clause to PXE example
  • add links between concepts and configuration sections
  • add chicken and egg note to overview
  • add support for versioned docs

Feat

  • wipe disks concurrently in the agent

Fix

  • log error with error log
  • wipe disk fully in the agent

Release

  • v0.1.0-alpha.7: prepare release

v0.1.0-alpha.6 (2020-10-21)

Feat

  • add support for control plane port

Release

  • v0.1.0-alpha.6: prepare release

v0.1.0-alpha.5 (2020-10-21)

Chore

  • update talos version

Feat

  • update CAPI providers

Fix

  • don't reset read only disks

Release

  • v0.1.0-alpha.5: prepare release

v0.1.0-alpha.4 (2020-10-19)

Chore

  • fix formatting

Docs

  • add server acceptance note

Feat

  • support config patches at the serverclass level
  • discover server IPs on registration, emit server events
  • add hostname to the server spec

Fix

  • use APIReader in server controller to avoid caching issues
  • proper event patching, powercycle vs. poweron
  • handle agent errors gracefully
  • use efiboot option

Release

  • v0.1.0-alpha.4: prepare release

Test

  • pull in the new version of go-loadbalancer
  • check if servers are reset on acceptance
  • add flags for modifying workload cluster installer image
  • bump Talos to 0.7.0-alpha.6 for Sfyra
  • enable verbose logs for CLI version of loadbalancer

v0.1.0-alpha.3 (2020-10-09)

Chore

  • refactor reconcile method in environment_controller.go
  • introduce RequeueAfter in metalcluster controller
  • remove talos dependency from metadata server
  • update Sfyra for the new Talos release

Feat

  • support server acceptance
  • power down servers !InUse && IsClean
  • ensure servers are clean
  • set servers as dirty by default

Fix

  • add ipmitool to metal-controller-manager
  • exit when port conflicts happen
  • delete machine instead of metalmachine in reset test
  • handle conflicts on server update

Refactor

  • break apart metadata server code
  • split 'sfyra' CLI into multiple subcommands

Release

  • v0.1.0-alpha.3: prepare release

Test

  • add scale test
  • bump talos for halt & healh check fixes
  • apply talos.shutdown=halt kernel argument
  • break serverclass creation into function and allow dummy servers
  • fix patching for sidero-controller-manager
  • provide list of expected control plane/worker nodes
  • extract capi.Cluster implementation
  • use dedicated config for the sfyra tests
  • fix nil pointer panic

v0.1.0-alpha.2 (2020-09-28)

Chore

  • update reference to internal registry
  • merge Sfyra into Sidero repository
  • add additional logging for metadata server
  • update namespace to caps-system

Docs

  • update Sfyra docs
  • add a post-pivot/create first workload cluster guide
  • add note about templated cluster manifest
  • add full bootstrapping guide

Feat

  • add reset functionality
  • allow qualifers to be partially equal
  • support environment ref at server and server class level
  • add serverclass as an owner to servers if needed

Fix

  • close file in TFTP handler
  • use proper context in metadata server
  • ensure proper checking of "in-use" status when fetching metadata
  • address panic in PartialEqual
  • revert "update namespace to caps-system"
  • update labels and labelselectors for each app
  • move to update instead of patching server inuse

Refactor

  • extract common ManagmentClient interface, add HTTP API

Release

  • v0.1.0-alpha.2: prepare release

Test

  • add reset test

v0.1.0-alpha.1 (2020-08-25)

Chore

  • expire server discovery requests

Docs

  • iterate on docs

Feat

  • fetch hostname if available

Fix

  • ensure servers always get patched

Refactor

  • move internal/app to app so that we can expose API

Release

  • v0.1.0-alpha.1: prepare release

v0.1.0-alpha.0 (2020-08-17)

Chore

  • update drone file for tagged releases
  • rename cluster api provider to match capi norms
  • add move label to metal controller manager CRDs
  • update drone pipeline type
  • address confrom errors
  • enable drone builds
  • format generated files
  • address linter errors
  • use sidero-system namespace
  • use 'sidero' instead of 'arges' and 'metal'
  • migrate projects

Docs

  • add website
  • address markdown lint errors
  • start sidero docs

Feat

  • add cluster-template for sidero

Fix

  • ensure servers only get picked once
  • ensure we don't clobber extraargs
  • update manifests
  • update kustomize configs
  • set asset download context timeout to 5 minutes
  • patch the release images
  • refactor kustomization to fix releases
  • remove stray reference to capi namespace.yaml

Release

  • v0.1.0-alpha.0: prepare release