MicroCloud 1.1 has been released

The LXD team is very excited to announce the release of MicroCloud 1.1!

This is the first release of MicroCloud. It is not an LTS release so we have started with version 1.1.

MicroCloud is the easiest way to get a fully highly available LXD cluster up and running.

This initial release brings together the work of the LXD, MicroCeph and MicroOVN teams.

MicroCloud automatically configures LXD, Ceph, and OVN across a set of servers.

Complete changelog

Here is a complete list of all changes in this release:

Full commit list
  • Add README
  • microcloud: Base CLI
  • microcloud/mdns/mdns: Add mdns helpers
  • microcloud/cmd/microd/main: Add hooks for mdns lookup/broadcast
  • Add initial licensing
  • microcloud: Rename the commands
  • snapcraft: Initial packaging
  • gomod: Update go.mod
  • gitignore: Initial gitignore
  • microcloud/cmd/microcloud/waitready: Rename microctl to microcloud
  • microcloud/mdns/mdns: Specify host and port for mdns broadcast
  • microcloud/cmd/microcloudd/main: Rename microd to microcloudd
  • microcloud/go: Update gomod
  • microcloud/mdns/mdns: Set max cluster size to 1000
  • microcloud/service/service/handler: Add service package
  • microcloud/cmd/microcloudd/main: Move bootstrap logic out of daemon
  • microcloud/cmd/microcloud: Handle bootstrap logic in control CLI
  • microcloud/mdns/mdns: Parse all service tokens on lookup
  • microcloud/go: Update gomod
  • microcloud/go: Update gomod
  • microcloud/service/lxd/join: Implement SetupTrust instead of importing
  • microcloud/service/lxd: Use ‘lxd init --preseed’ command to init LXD
  • microcloud/service/lxd/init: Revert to using API for initializing LXD
  • microcloud/service/lxd: Add a helper for getting a LXD client
  • microcloud/service/lxd/init: Add network setup to init helper
  • microcloud/service/lxd: Setup LXD network on bootstrap
  • microcloud/service/lxd/join: Join cluster without setting up trust first
  • microcloud/cmd/microcloud/main/init: Fix disk-add prompt
  • microcloud/cmd/microcloud/main/init: Proxy to target for adding disks
  • microcloud/service/service/handler: Setup MicroCloud before other services
  • microcloud/cmd/microcloud/main/init: Increase cluster join wait time
  • microcloud/api/lxd: Add manual lxd and ceph endpoints
  • microcloud/api/services: Add lxd and ceph proxies
  • microcloud/client/lxd: Add lxd and ceph client methods
  • microcloud/service: Use MicroCloud client for all services
  • microcloud/service/microcloud: Add new APIs to microcluster
  • microcloud/cmd/microcloudd/main: Update CLI arguments
  • microcloud/service/service/handler: Fix imports
  • microcloud/client/client: Remove microcluster example endpoint
  • microcloud/cmd/microcloud/cluster/members: Show fingerprint in cluster list
  • microcloud/service/service/handler: Begin joined broadcast after joining all services
  • microcloud/go: Update gomod
  • microcloud/cmd/microcloud/selection/table: Add SelectableTable type
  • microcloud/cmd/microcloud/main/init: Select from all disks to add to ceph
  • microcloud/cmd/microcloud/main/init: Rename start command to init
  • microcloud/service/microcloud: Handle storage pool target query param
  • microcloud/service/lxd/init: Simplify LXD init process
  • microcloud/service/lxd/disks: Configure storage pools
  • microcloud/cmd/microcloud/selection/table: Clean up selectable table after selection
  • snapcraft: Remove sqlite build
  • snapcraft: Setup plugs
  • snapcraft: Restrict LXD dependencies
  • github: Initial workflows
  • snapcraft: Strip un-needed plugs on client
  • microcloud/go: Update gomod
  • microcloud/service/microcloud: Proxy requests through lxd.ProtocolLXD
  • microcloud/service/lxd: Use lxd.InstanceServer for LXD client
  • microcloud/service/microceph: Use microcluster proxy for MicroCeph client
  • microcloud/cmd/microcloud: Use microcluster.Args
  • microcloud/api/services: Update proxy handlers
  • microcloud/service/service/handler: Add RunAsync helper
  • microcloud/service/service/handler: Run service commands asynchronously
  • snapcraft: Set grade to stable
  • microcloud/service/microcloud: Add helper to return cluster members from services
  • microcloud/cmd/microcloud/main/init: Compare cluster sizes when bootstrapping
  • microcloud/service/microceph: Increase cluster join timeout to 5 minutes
  • Introduce README
  • readme: small language fixes
  • microcloud/mdns/lookup: Continue waiting for a token if not selected in first round
  • microcloud/cmd/microcloud/main/init: Wait after initial 3 cluster members join
  • microcloud/cmd/microcloud/main/init: Properly exit if not adding disks
  • microcloud/cmd/microcloud/main/init: Warn if no local disks found
  • doc: convert to British English
  • doc: set up initial documentation
  • doc: move conf.py file
  • doc: add information on mixing architectures and growing a cluster
  • microcloud/service/microcloud: Fetch resources and wipe disks
  • microcloud/service/lxd: Support adding local storage pools on LXD clusters
  • microcloud/cmd/microcloud/main/init: Add local storage pool disk selection
  • microcloud/cmd/microcloudd/main: Skip MicroCeph if not found
  • microcloud/cmd/microcloud/main/init: Retry disk selection on error
  • microcloud/go: Update go modules
  • microcloud/service/service/handler: Don’t start join broadcast if initialized
  • lxd: Tweak indent for NetworksPost
  • lxd: Force Fan bridge underlay
  • go: Update go modules
  • Makefile: Match build flags with snapcraft
  • lxd: Add copy of DefaultGatewaySubnetV4
  • lxd: Set fan.underlay_subnet
  • lxd: Update the Fan IP to follow new mask
  • snapcraft: Add block-devices interface
  • microcloud/cmd/microcloud/main/init: Only skip adding disks in --auto mode
  • snapcraft: Drop block-devices interface
  • lxd: Set ceph pool name to lxd_remote
  • lxd: Improve ceph performance
  • github: Add basic test
  • microcloud: Bump default timeouts
  • doc: add documentation link checking to the Makefile
  • doc/actions: move doc tests to the overall test action
  • gomod: Run update-gomod
  • snapcraft: Add microovn plug
  • microcloud/service/microcloud: Add generic MicroCluster proxy for MicroCeph/OVN
  • microcloud/service/service/handler: Add MicroOVN service
  • microcloud/cmd/microcloudd/main: Setup MicroOVN if found
  • microcloud/api/services: Allow proxy requests before init
  • microcloud/cmd/microcloudd/main: Properly check for microceph unix socket
  • microcloud/mdns/lookup: Broadcast JoinConfig with join information
  • microcloud/cmd/microcloud/main/init: Split Bootstrap and AddPeers logic
  • microcloud/cmd/microcloud/main/init: Use MemberConfig for local storage config
  • microcloud/cmd/microcloud/main/init: Split LXD and MicroCeph remote storage actions
  • microcloud/service/microcloud: Add http listener on uninitialized cluster
  • microcloud/service/lxd: Add LXD https client helpers for uninitialized systems
  • microcloud/service/lxd: Create non-pending local pool in one shot
  • microcloud/cmd/microcloud/main: Add microcloud add command
  • microcloud/service/microcloud: Wipe disks through LXD config
  • microcloud/cmd/microcloud/main/init: End clustering process if no systems found
  • microcloud/service/service/handler: Simplify service handler helper
  • microcloud/service/service/handler: Add flag to handle MicroCloud first
  • microcloud/service/microcloud: Reduce mDNS lookup to just expect server info
  • microcloud/service/service/handler: Just broadcast server info on start
  • microcloud/service/service/handler: Add Service API types
  • microcloud/api/services/proxy: Rename proxy endpoint file
  • microcloud/api/services: Add /1.0/services endpoint
  • microcloud/client/client: Add /1.0/services client helper
  • microcloud/service/microcloud: Add RequestJoin helper
  • microcloud/cmd/microcloud/main/init: Simplify CLI join logic
  • microcloud/service/microceph: Fix imports
  • microcloud/cmd/microcloud/main/init: Clearer auto/wipe flag variable names
  • microcloud/service/service/handler: Add versioning to mdns lookup
  • microcloud/api: Pass daemon ServiceHandler to API handlers
  • microcloud/mdns: Generate AuthSecret for mDNS broadcast
  • microcloud/api: Check AuthSecret on service requests
  • microcloud/service: Set X-MicroCloud-Auth header for remote cons
  • microcloud/service: Assign secret on targeted clients
  • microcloud/cmd/microcloud/add: Add OVN support to add command
  • microcloud/service/service/handler: Add ServiceExists helper
  • microcloud/cmd/microcloudd/main: Simplify service existence check
  • microcloud/cmd/microcloud/main/init: Skip peers with missing services
  • client: Bump timeout to 120s
  • lxd: Wake up on initial startup
  • services: Tweak timeouts
  • gomod: Run update-gomod
  • lxd: Simplify bootstrap logic a bit
  • microcloud: Clear linebreak
  • microcloud/service/lxd: Create local volumes after clustering
  • microcloud/cmd/microcloud/main/init: Select ceph disks before clustering
  • microcloud/cmd/microcloud/main/init: Bootstrap after disk selection
  • microcloud/go: Update go modules
  • microcloud/cmd: Reorganize CLI functions
  • microcloud/service/lxd: Set OVN config after clustering
  • microcloud/service/microcloud: Add ceph disks immediately after clustering
  • microcloud/go: Update go modules
  • microcloud/cmd/microcloud/main/init: Set local address for MicroOVN
  • microcloud/cmd/microcloud/ask: Set remote storage pool source on add
  • gomod: Run update-gomod
  • cli: Restrict to root user
  • cmd/microcloud: Tweak storage question wording
  • service/lxd: Tweak default descriptions
  • microcloud/mdns: Broadcast over all interfaces
  • microcloud/cmd/microcloud/selection/table: Add Update capability to SelectableTable
  • microcloud/cmd/microcloud: Update table usage in CLI
  • microcloud/cmd/microcloud: Add address and subnet flags
  • microcloud/cmd/microcloud: Show selectable table for available peers
  • microcloud/service/service/handler: Add lxdLast flag to RunConcurrent
  • microcloud/cmd/microcloud: Show summary after table selection
  • microcloud/service/lxd: Check pending remote pools wbefore finalizing
  • microcloud/cmd/microcloud/selection/table: Add table scroll indicators
  • microcloud/cmd/microcloud/ask: Go to retry when no local storage selected
  • microcloud/cmd/microcloud/selection/table: Remove ESC from help
  • microcloud/cmd/microcloud/ask: Add disk fallback paths
  • microcloud/cmd/microcloud/ask: Add askAddress
  • microcloud/cmd/microcloud: Use askAddress for address & subnet
  • microcloud/cmd/microcloud/ask: Skip remote storage if too few disks
  • microcloud/service/lxd: Add GetUplinkInterfaces
  • microcloud/service/lxd: Add OVN uplink network to LXD if available
  • microcloud/cmd/microcloud/main/init: Ask distributed networking questions
  • microcloud/service/lxd: Fix lxdfan0 creation
  • microcloud/ask: Tweak gateway question
  • microcloud/ask: Tweak OVN question
  • microcloud/ask: Drop debugging
  • microcloud/ask: Fix alignment
  • microcloud/ask: Show summary of OVN uplinks
  • microcloud/ask: Add line break
  • service/lxd: Listen for clients on all addresses
  • microcloud/cmd/microcloud/ask: Allow skipping IPv6 gateway
  • microcloud/ask: Don’t offer OVN if no uplink
  • microcloud/init: Don’t ask for IPv6 OVN range
  • doc: add MicroOVN and update docs
  • doc: add more information to the docs
  • doc: update to the current starter pack
  • doc: update .rst files to adhere to our style guide
  • doc: add some related links
  • doc: some clarifications to the documentation
  • doc: language fixes for initialization prompts
  • doc: clean up help strings
  • microcloud: Remove mentions to MicroCluster
  • doc: update init prompts
  • gomod: Run update-gomod
  • microcloud/service/service/handler: Split broadcasting helpers from MicroCluster hooks
  • microcloud/cmd/microcloudd/main: Periodically check for new services
  • microcloud/cmd/microcloud/main/init: Detect updated services
  • microcloud/service/lxd: Apply network to all peers without OVN
  • doc: update Microcloud requirements
  • doc: fix version error
  • snapcraft: Require snapd 2.59
  • doc: update tutorial video to the video that includes OVN
  • gomod: Run update-gomod
  • microcloud/api: Move to LXD’s ws package
  • gomod: Run update-gomod
  • doc: add a favicon
  • microcloud: Tweak allowed interfaces for OVN
  • gomod: Run update-gomod
  • microcloud/service/lxd: Simplify LXD client peer targetting
  • microcloud/service/lxd: Skip server check on LXD queries
  • microcloud/cmd/microcloudd/main: Ensure AuthSecret before restarting broadcast
  • cmd/ask: Add question prior to network selection
  • doc: update to the latest starter pack version
  • doc: fix inclusive language
  • doc/initialisation: add prompt for network interface
  • doc/initialisation: clarify disk requirements
  • doc: fix the workdir for the inclusive language check
  • doc: adjust paths in .readthedocs.yaml
  • ovn: Use SSL as required by current edge snap
  • microcloud/cmd: Don’t require each peer to contribute a disk
  • microcloud/cmd: Prompt user to skip ceph/ovn on ineligible systems
  • microcloud/cmd/microcloud/ask: Fix missing ceph disk prompt
  • microcloud/cmd/microcloud/ask: Fix validation for ovn-ineligible systems
  • doc: update links to linuxcontainers
  • doc: fix linkcheck and inclusive language
  • gomod: Renames lxc/lxd to canonical/lxd.
  • api: Updates lxd imports.
  • client: Updates lxd imports.
  • cmd: Updates lxd imports.
  • mdns: Updates lxd imports.
  • service: Updates lxd imports.
  • microcloud/cmd/microcloud/ask: Fix incorrect slice append
  • doc: remove Linuxcontainers logo
  • mdns: Replace CutSuffix with HasSuffix and TrimSuffix.
  • api: Fixes lint errors.
  • cmd: Fixes lint errors.
  • mdns: Fixes lint errors.
  • service: Fixes lint errors.
  • test/lint: Adds lint scripts.
  • golangci: Adds golangci-lint config.
  • revive: Adds revive config.
  • Makefile: Updates check-static target.
  • workflows: Adds code tests job.
  • microcloud/cmd/microcloud/main/init: Apply remote pool to all peers
  • microcloud/cmd/microcloud: Pass entries from template to funcs
  • microcloud/cmd/microcloud: Use Default to pass table data to template
  • microcloud/api/services/proxy: Don’t use whole path for request URL
  • microcloud/service/lxd: Add Restart helper to LXD service
  • microcloud/service/service/handler: Restart LXD before init
  • microcloud/service/lxd: Check if LXD is initialized before restarting
  • cmd/microcloud: Fix user confiramtion for missing services
  • .github: Adds CODEOWNERS file
  • gomod: Updates gomod.
  • cmd/microcloud: Updates ‘Ask’ calls to use cli.Asker.
  • cmd/microcloud: Use format flag when listing cluster members.
  • cmd/microcloud: Use format flag when listing tokens.
  • service/lxd: Export proxied lxd client helper
  • service/lxd: Change argument type from map to slice
  • service/lxd/config: Add helpers for building lxd API structs
  • cmd/microcloud/main/init: Create InitSystem type
  • cmd/microcloud/main/init: Fill InitSystem mDNS info when finding systems
  • microcloud/cmd/microcloud/main/init: Use global asker for CLI questions
  • cmd/microcloud/ask: Fill InitSystem disk info
  • cmd/microcloud/ask: Fill InitSystem network info
  • cmd/microcloud/main/init: Apply InitSystem config when sending join requests
  • cmd/microcloud/main/init: Setup cluster and apply remaining InitSystem configuration
  • cmd/microcloud/add: Use new helpers for add command
  • service/lxd: Remove config helpers from LXD service
  • service/lxd: Prevent LXD restart failing if in progress
  • service/microovn: Confirm bootstrapped systems before issuing tokens
  • cmd/microcloud/main/init: Remove comment about system name setting
  • cmd/microcloudd/main: Update services if they are removed
  • microcloud/service: Use context timeout over time.timeAfter
  • microcloud/service: Add context to LXD client
  • microcloud/service/microcloud: Change RequestJoin to be per-system
  • microcloud/cmd/microcloud/main/init: Sequentially request cluster joins
  • microcloud/cmd/microcloud: Change interactive setup comment
  • cmd/microcloud/test/console: Add test console for system tests
  • cmd/microcloud: Handle table.Render error
  • cmd/microcloud/input/test: Add unit tests for test console
  • microcloud/test: Add system tests
  • microcloud: Add unit tests to workflow
  • cmd/main/init: Lookup specific systems with mDNS
  • cmd/microcloud/main/init/preseed: Add preseed.yaml parser
  • cmd/microcloud/main/init: Add preseed flag to init & add commands
  • doc/how-to/preseed: Add a sample yaml with documentation
  • microcloud/cmd/microcloud: Fix ellipses to be like the rest
  • microcloud/cmd/microcloud: Add preseed unit tests
  • microcloud: Update go modules
  • microcloud/test/suites: Add preseed system test
  • doc: update to the latest version of the starter pack
  • microcloud: Update go modules
  • microcloud/service: Use new ValueInSlice helper
  • .github/workflows: Remove go mod update from workflow
  • snapcraft: Snap packaging has moved to https://github.com/canonical/microcloud-pkg-snap/
  • github: Update versions
  • github: Combine unit tests into code tests job
  • github: Removes snap build tests
  • github: Add snap edge build trigger
  • github: Combine DCO and CLA checks
  • doc/support: add a basic support page
  • microcloud/service: Propagate verbose/debug flags to microcluster
  • microcloud/test/includes: Fix microceph cleanup
  • microcloud/cmd/microcloud: Fix preseed detection for FAN network
  • microcloud/test/suites: Add tests for FAN network with preseed
  • microcloud/cmd/microcloud: Allow yamls missing interfaces
  • microcloud: Update go modules
  • doc/contributing: add a contribution guide
  • doc: add information about managing the snaps
  • microcloud/test/suites: Test launching VMs and containers
  • microcloud/test/suites: Add comments for preseed tests
  • github: enable shellcheck action
  • github: enable dependency review action
  • tests/basic: add quotes
  • tests/basic: local doesn’t do anything in sh
  • tests/includes/microcloud: local doesn’t do anything in sh
  • test/includes/microcloud: lxd_wait_vm() should return 1 on error
  • test/includes/microcloud: add missing quotes
  • test/includes/microcloud: wait only accept 1 pid or wait for all jobs
  • test/basic: use lxc list instead of lxc ls
  • test/includes/microcloud: please shellcheck
  • test/add: shellcheck clean
  • test/basic: shellcheck clean
  • test/includes/check: drop unused check_empty_table()
  • test/main: drop unneeded dependencies
  • test/main: fail if MICROCLOUD_SNAP_PATH isn’t defined or doesn’t exist
  • test/includes/microcloud: remove unneeded lxc() function
  • test/includes/microcloud: don’t add curl package to cloud-config snippet
  • test/includes/microcloud: switch to ubuntu-minimal:22.04 (smaller and quicker to boot)
  • README: remove linuxcontainers logo

Downloads

The release tarballs can be found on our download page.

Binary packages are also available from the Snap Store:

3 Likes

Is there a way to generate the preseed file for microcloud from an interactive session like how it’s able in lxd?

Is there a way to generate it later?

@masnax @mionaalex is this something that is possible at the moment? If not should we add support for it?