Back to the news overview

LXD 3.11 リリースのお知らせ

6th of March 2019

はじめに

LXD チームは LXD 3.11 のリリースをお知らせすることにとてもワクワクしています!

プロジェクトの最近の作業は、大きな機能追加とリファクタリングがほとんどですので、このリリースで主にその過程で見つかったバグやレポートされた問題に対するバグフィックスを行っています。

また、ここしばらく LXC 側で行っていた C 言語でのハードニング作業もこのリリースの機能となります。これは、慎重に扱うべきコード内で起こるミスの可能性を減らすための作業です。

このリリースには新しいものが何もないというわけではありません。進捗レポート、スナップショットの扱い、認証の一元管理といった機能の改良のような、ユーザーが使う場合に関係するたくさんの細かな改良が含まれています。

Enjoy!

新機能

作成時にスナップショットの有効期限を設定可能に

先のリリースで、スナップショットの自動化とスナップショット期限切れの自動化が導入されました。

設定したデフォルトの有効期限は、自動化されたスナップショットだけでなくすべてのスナップショットに適用されるので、手動でスナップショットを作成してから有効期限を編集するのは少し面倒です。そこで、スナップショットの作成時に有効期限を設定できるようになりました。

API レベルでは、明示的にタイムスタンプを指定すれば有効期限を設定できます。もし null と設定すれば、設定した自動での有効期限設定に関わらず、永続的なスナップショットを作成できます。

CLI を使う場合は、lxc snapshot コマンドに新しいオプションである --no-expiry を指定できます。

publish 操作での進捗レポート

lxc publish をコンテナやスナップショットに対して実行している際に、進捗情報が表示されるようになりました。これは、イメージ転送やコンテナのマイグレーションと同様のもので、何が実際に起こっているのかを確認するのに役立つでしょう。

Candid 認証の改良

CLI から Candid 認証を扱う方法が少し変わりました:

リモートごとの認証クッキー

このリリースより前は、共有した "cookie jar" がすべてのリモートで使われていました。

このことは、ふたつのリモートが同じ Candid 認証サーバを使っている場合に、ふたつ目のリモートが既存のクッキーを再利用するため、認証ドメインが無視される可能性があり、新しい認証のやりとりが必要でなくなるため、時折一貫性のない動きを引き起こします。

このバージョンで、リモートごとに専用の "cookie jar" を持つようになったので、リモートを追加する際の LXD の動きは常に一致するようになりました。

新しいリモートの追加時に TLS より Candid を優先する

lxc remote add を使って新しいリモートを追加する場合に、そのリモートが Candid 認証をサポートする場合は、TLS 認証の代わりに Candid 認証を使います。

認証タイプは常に --auth-type を指定して上書きできます。

リモートリスト一覧で Candid ドメインを表示

リモートのリスト表示では、lxc remote add で Candid ドメインを指定した場合には、どの Candid ドメインを使っているかを表示するようになります:

stgraber@castiana:~$ lxc remote list
+-----------------+------------------------------------------+---------------+-----------------------+--------+--------+
|      NAME       |                   URL                    |   PROTOCOL    |       AUTH TYPE       | PUBLIC | STATIC |
+-----------------+------------------------------------------+---------------+-----------------------+--------+--------+
| images          | https://images.linuxcontainers.org       | simplestreams | none                  | YES    | NO     |
+-----------------+------------------------------------------+---------------+-----------------------+--------+--------+
| local (default) | unix://                                  | lxd           | file access           | NO     | YES    |
+-----------------+------------------------------------------+---------------+-----------------------+--------+--------+
| nuc01           | https://nuc01.maas.mtl.stgraber.net:8443 | lxd           | candid (usso)         | NO     | NO     |
+-----------------+------------------------------------------+---------------+-----------------------+--------+--------+
| nuc02           | https://nuc02.maas.mtl.stgraber.net:8443 | lxd           | candid (stgraber.net) | NO     | NO     |
+-----------------+------------------------------------------+---------------+-----------------------+--------+--------+
| ubuntu          | https://cloud-images.ubuntu.com/releases | simplestreams | none                  | YES    | YES    |
+-----------------+------------------------------------------+---------------+-----------------------+--------+--------+
| ubuntu-daily    | https://cloud-images.ubuntu.com/daily    | simplestreams | none                  | YES    | YES    |
+-----------------+------------------------------------------+---------------+-----------------------+--------+--------+

Bugs fixed

  • client: Empty stdin channel on exec completion
  • client: Fix goroutine leak in ExecContainer
  • client: Revert "client: fix goroutine leak in ExecContainer"
  • doc: Add first stab at FAQ
  • doc: Fix typos in faq.md
  • doc: Update rest-api.md formatting
  • i18n: Update translations from weblate
  • i18n: Update translation templates
  • lxc: Improve error handling in execIfAliases
  • lxc: Update for per-remote candid domain/cookies
  • lxc/cluster: Prompt for confirmation when using --delete to remove a server
  • lxc/console: Remove unused code
  • lxc/exec: Cleanup terminal logic
  • lxc/exec: Don't use Exit
  • lxc/list: Fix multiple filters
  • lxc/monitor: Don't directly use Exit
  • lxc/profile: Make json/yaml consistent
  • lxc/remote: Tweak remote list
  • lxd: Add username/fingerprint to request context
  • lxd: Cleanup authentication code
  • lxd: Copy C smarts from LXC into lxd/include/
  • lxd: Fix duplicate scheduled snapshots
  • lxd: Fix failing backup import
  • lxd: Fix snapshot expiry for scheduled snapshots
  • lxd: Fix variable in range
  • lxd: Remove backup directory after creating tarball
  • lxd: Set correct progress data for backup/publish
  • lxd/checkfeature: Cleanup macros is_netnsid_aware
  • lxd/checkfeature: Cleanup macros netns_set_nsid
  • lxd/containers: Set liblxc env for CVE-2019-5736
  • lxd/containers: Skip interface removal if missing
  • lxd/containers: Validate ipv4/ipv6 address
  • lxd/daemon: Move autoSyncImagesTask to clusterTasks
  • lxd/daemon: When starting up, use the cluster.https_address as key for updating the nodes table
  • lxd/db: A node with custom volumes is not empty
  • lxd/db: Fix tests for current go-sqlite3
  • lxd/db: Support to fetch a list of project for an image
  • lxd/db: Use capital case in error messages returned by db.NodeInfo.IsEmpty()
  • lxd/db: Use proper function names for the query of the image nodes
  • lxd/devlxd: Initialize variable to 0
  • lxd/forkfile: Cleanup macros manip_file_in_ns
  • lxd/forkmount: Cleanup macros
  • lxd/forkuevent: Cleanup macros
  • lxd/images: Add a task that auto synchronize images across the cluster and run it on the background
  • lxd/images: Associate image with the right project on the joined node
  • lxd/images: Do not iterate all available nodes across the cluster for image synchronization
  • lxd/images: Fetch the images fingerprints of the current online node
  • lxd/images: Import all images from the leader node to the new node after it's joined
  • lxd/images: Only show the image auto-sync log when clustering
  • lxd/main_nsexec: Fix type of length in file_to_buf
  • lxd/network: Reword sysctl network functions
  • lxd/network: Rework IP validation functions
  • lxd/nsexec: Cleanup macros attach_userns
  • lxd/nsexec: Cleanup macros do_setns
  • lxd/nsexec: Cleanup macros file_to_buf
  • lxd/nsexec: Cleanup macros in_same_namespace
  • lxd/nsexec: Make cmdline parsing more reliable
  • lxd/profiles: Fix project update when clustered
  • lxd/proxy: Add locking around UDP timer
  • lxd/storage/ceph: Rework df handling
  • lxd/storage_cgo: Cleanup macros find_associated_[...]
  • lxd/storage_cgo: Cleanup macros get_un[...]_legacy
  • lxd/storage_cgo: Cleanup macros get_unused_loop_dev
  • lxd/storage_cgo: Cleanup macros prepare_loop_dev
  • lxd/storage_cgo: Include macro.h
  • lxd/storage: Drop unused function
  • lxd/storage/lvm: Call wipesignatures
  • shared: Tweak progress metadata
  • shared/network: Include macro.h
  • shared/osarch: Add ArchLinux name for armv7
  • shared/osarch: Add gentoo armhf variant
  • shared/shift_linux: Cleanup macros shiftowner
  • shared/util_linux_cgo: Cleanup macros lxc_abstract_[...]
  • shared/util_linux_cgo: Restore old behavior
  • tests: Add integration test checking that nodes with custom volumes can't be removed
  • tests: Add snapshot expiry configuration on create
  • tests: avoid needless wait times during image synchronization when clustering
  • tests: Update godeps
  • tests: Update the test case to cover the image sync scenario for joined node

試用環境

この新しい LXD リリースは私たちの デモサービス で利用できます。

ダウンロード

このリリースの tarball は ダウンロードページ から取得できます。