cloud.ca is a regional IaaS designed to help meet regulatory or security requirements by storing data in Canada. Container Linux is a supported operating system for VMs on the cloud.ca infrastructure.
Container Linux is designed to be updated automatically, with three channels of different update schedules: Stable, Beta, and Alpha. You can disable this feature, although we don't recommend it. Read the release notes for specific features and bug fixes.
The cloud.ca Container Linux image is built from the official stable release CloudStack image.
The Alpha channel closely tracks master and is released frequently. The newest versions of system libraries and utilities will be available for testing. The current version is Container Linux 2023.0.0. To use the Alpha channel on cloud.ca, select the "CoreOS Stable" template and update the cloud-config to [change the channel to alpha][switching-channels]:
#cloud-config coreos: update: group: alpha
The Beta channel consists of promoted Alpha releases. The current version is Container Linux 1995.1.0. To use the Beta channel on cloud.ca, use the "CoreOS Stable" template and update the cloud-config to [change the channel to beta][switching-channels]:
#cloud-config coreos: update: group: beta
The Stable channel should be used by production clusters. Versions of Container Linux are battle-tested within the Beta and Alpha channels before being promoted. The current version is Container Linux 1967.3.0.
|Region||Template Name||Template ID|
|Compute - East||CoreOS Stable||f3d810d8-4e08-4ffb-afe3-6a71e3ce9062|
Container Linux allows you to configure machine parameters, launch systemd units on startup, and more via cloud-config. Jump over to the docs to learn about the supported features. Cloud-config is intended to bring up a cluster of machines into a minimal useful state and ideally shouldn't be used to configure anything that isn't standard across many hosts. Once the machine is created, cloud-config cannot be modified.
You can provide cloud-config data using cloud.ca management portal or through the CloudStack API. When using CloudStack API, the cloud-conf must be base64 encoded as the
The current cloud-config example uses a data disk as the docker datastore (/var/lib/docker).
#cloud-config coreos: etcd2: # generate a new token for each unique cluster from https://discovery.etcd.io/new?size=3 # specify the initial size of your cluster with ?size=X discovery: https://discovery.etcd.io/<token> # multi-region and multi-cloud deployments need to use $public_ipv4 advertise-client-urls: http://$private_ipv4:2379,http://$private_ipv4:4001 initial-advertise-peer-urls: http://$private_ipv4:2380 # listen on both the official ports and the legacy ports # legacy ports can be omitted if your application doesn't depend on them listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001 listen-peer-urls: http://$private_ipv4:2380 units: - name: etcd2.service command: start - name: fleet.service command: start - name: format-ephemeral.service command: start content: | [Unit] Description=Formats the ephemeral drive [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/sbin/wipefs -f /dev/xvdb ExecStart=/usr/sbin/mkfs.btrfs -f /dev/xvdb - name: var-lib-docker.mount command: start content: | [Unit] Description=Mount ephemeral to /var/lib/docker Requires=format-ephemeral.service After=format-ephemeral.service Before=docker.service [Mount] What=/dev/xvdb Where=/var/lib/docker Type=btrfs
The $public_ipv4 substitution variable is not supported in cloud-config on cloud.ca. To use a multi-region cluster, the cluster configuration and the port-forwarding must be done manually.
To add more instances to the cluster, just launch more with the same cloud-config in the same VPC. New instances will join the etcd2 cluster automatically.
Before deploying Container Linux on cloud.ca, you need the following:
/var/lib/docker, as defined in the cloud-config excerpt. This step is optional:
$ ssh -i ~/.ssh/user1_rsa core@74.X.X.X CoreOS stable (766.4.0) core@coreos-node01 ~ $ df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 483M 0 483M 0% /dev tmpfs 496M 0 496M 0% /dev/shm tmpfs 496M 292K 496M 1% /run tmpfs 496M 0 496M 0% /sys/fs/cgroup /dev/xvda9 2.0G 19M 1.9G 1% / /dev/xvda3 985M 390M 545M 42% /usr /dev/xvda1 128M 32M 97M 25% /boot tmpfs 496M 0 496M 0% /tmp tmpfs 496M 0 496M 0% /media /dev/xvda6 108M 80K 99M 1% /usr/share/oem /dev/xvdb 40G 17M 38G 1% /var/lib/docker core@coreos-node01 ~ $ etcdctl member list 7cb50ab9db389524: name=6a02cad1a70840d8a6ac2c5d3bf80aea peerURLs=http://10.151.68.222:2380 clientURLs=http://10.151.68.222:2379,http://10.151.68.222:4001