Back to the news overview

Incus 6.2 リリースのお知らせ

2024/05/31

はじめに

Incus チームは、Incus 6.2 のリリースのアナウンスができてうれしいです!

このリリースには、テキサス大学オースティン校の学生による変更の第 2 弾と、その他いくつかの機能追加と改良が含まれています。

image|690x454

いつものように、オンラインでご自身で試せます: https://linuxcontainers.org/incus/try-it/

Enjoy!

新機能

新しい incus top コマンド

新たに incus top コマンドを追加しました。これは、Incus のビルトイン OpenMetrics エンドポイント上に構築され、CPU、メモリー、ディスク使用量のインスタンスのリストの更新ビューが表示できるようになります。

+---------------+-------------+-----------+-----------+
| INSTANCE NAME | CPU TIME(S) |  MEMORY   |   DISK    |
+---------------+-------------+-----------+-----------+
| foo           | 6.73        | 12.44MiB  | 341.88MiB |
+---------------+-------------+-----------+-----------+
| speedtest     | 32.79       | 23.84MiB  | 373.50MiB |
+---------------+-------------+-----------+-----------+
| v1            | 67130.91    | 254.54MiB | 1.25GiB   |
+---------------+-------------+-----------+-----------+
Press 'd' + ENTER to change delay
Press 's' + ENTER to change sorting method
Press CTRL-C to exit

Delay: 5s
Sorting Method: Alphabetical

この作業は、テキサス大学オースティン校の学生によるコントリビューションです。

リソース API 内のシステム負荷情報

リソース API に新しいセクションが追加されました。サーバー負荷情報(1分、5分、10分)と、合計プロセス数が公開されるようになりました。

これは、Incus API からだけでさまざまなサーバーがどの程度ビジーかをひと目で見ることができるため、配置や自動バランシングのロジックに特に役立つでしょう。

stgraber@castiana:~$ incus info --resources
System:
  UUID: 05006c9c-7863-ee11-9e1b-224425600022
  Vendor: Framework
  Product: Laptop 13 (AMD Ryzen 7040Series)
  Family: Laptop
  Version: A5
  SKU: FRANDGCP05
  Serial: FRANDGCPA5340500AZ
  Type: physical
  Chassis:
      Vendor: Framework
      Type: Notebook
      Version: A5
      Serial: FRANDGCPA5340500AZ
  Motherboard:
      Vendor: Framework
      Product: FRANMDCP05
      Serial: FRANMDCPA534040120
      Version: A5
  Firmware:
      Vendor: INSYDE Corp.
      Version: 03.05
      Date: 03/29/2024

Load:
  Processes: 519
  Average: 0.80 0.77 0.71

[snip...]

この作業は、テキサス大学オースティン校の学生によるコントリビューションです。

インスタンスとプロジェクトへのアクセス情報を問い合わせる機能

新しい API が 2 つ追加され、プロジェクトまたは特定のインスタンスのアクセスリストが照会できるようになりました。

これは、OpenFGA サポートと統合されており、OpenFGA の十分に新しいバージョンであれば、誰がインスタンスにアクセスでき、どのようなロールを持っているのかを正確に表示します。

stgraber@castiana:~$ incus info --show-access foo
- identifier: stgraber@stgraber.org
  role: admin
  provider: openfga

stgraber@castiana:~$ incus project info --show-access default
- identifier: stgraber@stgraber.org
  role: admin
  provider: openfga

この作業は、テキサス大学オースティン校の学生によるコントリビューションです。

プロジェクトの強制削除

多数の負荷の高いプロジェクトを扱うとき、プロジェクトを削除するには、それらに含まれるすべてを正しい順序で探し出して、削除する必要があるため、かなりフラストレーションがたまります。

このようなことに対応するため、プロジェクトを削除する前に、すべてを正しい順序で削除するように Incus に指示する incus project delete --force が追加されました。

このコマンドは明らかに危険なコマンドです。このコマンドラインツールは、このプロジェクトをすべて削除しても良いのかを常に確認します。

stgraber@castiana:~$ incus project delete demo
Error: Only empty projects can be removed.

stgraber@castiana:~$ incus project delete demo --force
Remove demo and everything it contains (instances, images, volumes, networks, ...) (yes/no): yes
Project demo deleted

新たに get_project 関数をスクリプトレット関数に追加

スクリプトレットによるインスタンス配置機能(instances.placement.scriptlet)を利用しているユーザー向けに、新たに get_project 関数を追加しました。

この機能により、特定のプロジェクトのすべての詳細情報(api.Project)が取得できるようになり、プロジェクトの制限や制約を、配置を決定する際に特に役に立つようになりました。

ドキュメント: https://linuxcontainers.org/incus/docs/main/explanation/clustering/#instance-placement-scriptlet

この作業は、テキサス大学オースティン校の学生によるコントリビューションです。

プロジェクトをまたぐオブジェクトの問い合わせ

Incus は、プロジェクトをまたいだ、すべてのインスタンスのリスト表示を長い間サポートしてきました。
そして、最近では、この機能はストレージボリューム、イメージ、プロファイル、ネットワークゾーン、オペレーションもカバーするように拡張されました。

Incus 6.2 では、残りのすべてのオブジェクトが、この機能をサポートするようになりました。追加されたのは次のものです:

  • ストレージバケット
  • ネットワーク
  • ネットワーク ACL

CLI もそれに合わせて更新されたので、プロジェクト固有である可能性のあるオブジェクトを操作する list コマンドもすべて、--all-projects をサポートするようになりました。

この作業は、テキサス大学オースティン校の学生によるコントリビューションです。

incus info --resources の PCI デバイス

incus info --resources の出力に、すべての PCI デバイスが含まれるようになりました。
従来は、GPU もしくはディスクセクションに含まれるデバイスのみが利用できました。

この作業は、テキサス大学オースティン校の学生によるコントリビューションです。

incus-simplestreams のエイリアス処理の改良

初期の incus-simplestreams の実装は、基本的に DISTRIBUTION/RELEASE/VARIANT という標準的なエイリアスが自動的に生成されます。しかし、これはすべての環境に適しているわけではありません。そこで、incus-simplestreams add に新たに 2 つの引数が追加されました。

  • 前述のエイリアスを無効化するための --no-default-alias
  • カスタムエイリアスを定義するための --alias (複数回指定可能)

incus CLI の create に与える YAML

この作業は Incus 6.1 で始まり、今回完了しました。

すべての create コマンド、incus initincus launch コマンドは、標準入力からの YAML を初期設定として読み取ることをサポートするようになりました。

これにより複雑なデプロイのスクリプトがはるかに簡単に作成できるようになります。

CLI のリストのカラムのカスタマイズ

Incus 6.1 で開始したもう 1 つの作業が完了しました。

list 機能を持つ CLI コマンドはすべて、--column/-c フラグをサポートするようになりました。

この作業は、テキサス大学オースティン校の学生によるコントリビューションです。

ドキュメントの自動生成の増加

ほとんどのユーザーは気づかないことですが、ドキュメントが古くなったり、動機がずれるリスクを減らすため、コード内のコメントから直接ドキュメントが生成されるように徐々に移行しています。

Incus 6.2 では、次のドキュメントがこの方法で生成されるようになりました:

  • Network zones
  • Image restrictions
  • Kernel limits
  • Devices
    • disk
    • unix-block
    • unix-char
    • unix-hotplug
    • usb

この作業は、テキサス大学オースティン校の学生によるコントリビューションです。

すべての変更点

このリリースのすべての変更のリストは次の通りです(翻訳なし):

すべてのChangeLogを見る
  • incusd/instance/lxc: Add gendoc comments for image restrictions
  • incusd/instance/qemu: Add gendoc comments for image restrictions
  • doc: Update configs
  • doc/image-handling: Use gendoc data
  • incus/storage_bucket: Add yaml support for key create
  • i18n: Update translation templates
  • incusd/instance/qemu: Fix StartedAt handling
  • incus/storage: Customizable columns in list
  • i18n: Update translation templates
  • incusd/network/ovn: Port LogicalRouterSNATAdd and LogicalRouterDNATSNATAdd to libovsdb
  • incusd/network: Update for OVN function changes
  • api: instances_scriptlet_get_project
  • doc/instances/scriptlet: Add get_project
  • incusd/scriptlet: Add get_project
  • api: networks_all_projects
  • shared/api: Add Project field to Network
  • client: Add GetNetworksAllProjects
  • incus/network: Add all-projects
  • incusd/db: Add GetNetworksAllProjects
  • incusd/networks: Add all-projects
  • internal/instance: Add gendoc for limits.kernel
  • doc: Update configs
  • doc: Use gendoc for limits.kernel
  • api: network_acls_all_projects
  • shared/api: Add Project field to NetworkACL
  • client: Add GetNetworkACLsAllProjects
  • incus/network/acl: Add all-projects
  • incusd/db: Add GetNetworkACLsAllProjects
  • incusd/network/acl: Set Project field
  • incusd/network_acls: Add all-projects
  • api: storage_buckets_all_projects
  • shared/api: Add Project field to StorageBucket
  • client: Add GetStoragePoolBucketsAllProjects
  • incus/storage/bucket: Add all-projects
  • incusd/db/storage_buckets: Fill Project field
  • incusd/storage_buckets: Add all-projects
  • i18n: Update translation templates
  • incusd/networks: Fix import shadowing
  • doc/rest-api: Refresh swagger YAML
  • client: Align GetProfilesAllProjects with GetProfiles
  • client: Align GetNetworkZonesAllProjects with GetNetworkZones
  • client: Standardize the GetNetworkAllocation functions
  • incus/network_allocations: Update for client changes
  • incusd/device/usb: Add gendoc for the USB device
  • doc: Update configs
  • doc: Use gendoc for USB devices
  • api: resources_load
  • shared/api: Add Load to resources API
  • doc/rest-api: Refresh swagger YAML
  • incusd/resources: Add load information
  • incus/info: Add load information
  • i18n: Update translation templates
  • incusd/device/unix: Add gendoc comments
  • doc: Update configs
  • doc/devices_unix_block.md: Use gendoc data
  • doc/devices_unix_char.md: Use gendoc data
  • doc/devices_unix_hotplug.md: Use gendoc data
  • incus/top: Add new command
  • i18n: Update translation templates
  • incusd/network/zone: add gendoc for network zone
  • doc: Update configs
  • doc: Use gen doc for network zones
  • incusd/device/unix: Run gofmt
  • incus/info: Add PCI devices to --resources
  • i18n: Update translation templates
  • incusd/device/disk: Add gendoc comments
  • doc: Update configs
  • doc/devices/disk: Use gendoc
  • incus/network: Customizable columns in list
  • i18n: Update translation templates
  • incusd/network_zones: Fix listing of zones within a project
  • incusd/instance/lxc: Fix handling of migration.stateful
  • gomod: Update dependencies
  • incusd/network/ovs: Fix bad VLANMode value
  • fix: close resources
  • incusd/instance: Fix building on 32bit architectures
  • incus/network_zone: Add example for network zone record create
  • i18n: Update translation template
  • incus/storage_volume: Add yaml support for create
  • i18n: Update translation templates
  • cmd/incus/info: Fix runtime error when chassis, motherboard and firwmare information is not available
  • Translated using Weblate (German)
  • incusd/instance/qemu: Allow setting protection.delete when running
  • doc/api-extension: Fix typo
  • shared/api: Introduce Access structs
  • api: instance_access
  • incusd/auth: Introduce GetInstanceAccess
  • incusd/instance: Add access endpoint
  • api: project_access
  • incusd/auth: Introduce GetProjectAccess
  • incusd/project: Add access endpoint
  • doc/rest-api: Refresh swagger YAML
  • client: Add GetInstanceAccess
  • client: Add GetProjectAccess
  • incus/info: Fix description of --show-log
  • incus/info: Add --show-access
  • incus/project: Add --show-access to info
  • i18n: Update translation templates
  • incusd/auth/fga: Rename manager by admin in model
  • incusd/auth/fga: Rework permission model
  • incusd/auth/fga: Rebuild model
  • tests: Fix for permission changes
  • incusd/instance/agent-loader: Support installing to /etc
  • incusd/apparmor/lxc: Fix rule syntax
  • incus-simplestreams add: added flags: --no-default-alias, --alias. #875
  • incus/storage_volume/snapshot: Support YAML for creation
  • i18n: Update translation templates
  • shared/idmap: Make get_userns_fd configure the userns
  • incus-migrate: Handle valid CA certificates
  • incusd/instances_post: Fix migrating into remote cluster
  • incusd/apparmor: Detect nosymfollow support
  • incusd: Set SELinux label on socket
  • incus/network: Align attach-profile with attach
  • create_detached_idmapped_mount: avoid double close
  • incusd/instance/qemu: Extend missing QEMU error
  • doc/installing: Mention extra packages for VMs
  • incusd/storage/btrfs: Fix btrfs argument order
  • incusd/seccomp/sysinfo: Handle 32bit on 64bit
  • api: projects_force_delete
  • incusd/api_project: Add force delete endpoint
  • doc/rest-api: Refresh swagger YAML
  • client: Introduce DeleteProjectForce
  • cmd/incus/project: Add --force to delete
  • i18n: Update translation templates
  • incusd/project: Simplify projectIsEmpty
  • incusd/db: Introduce GetNetworkZoneURIs
  • incusd/db: Introduce GetStorageBucketURIs
  • incusd/api_project: Fix UsedBy
  • incusd/api_project: Add force deletion logic
  • incus/completion: Reduce API calls
  • incus/publish: Complete snapshot names
  • incus/completion: Fix import shadowing
  • Translated using Weblate (French)
  • Makefile: Pin go-acme/lego for Go 1.21
  • Update dependencies
  • cmd/incus/console: Cleanup --show-log
  • incusd/instance_console: Remove old check
  • incusd/instance_console: Handle missing log file
  • incusd/instance_console: Don't fail on empty logs
  • incusd/instance_console: Cleanup error message
  • i18n: Update translation templates
  • incusd/device/sriov: Line up code with comment

ドキュメント

Incus のドキュメントはこちらです:
https://incus-ja.readthedocs.io/ja/latest/ (日本語訳)
https://linuxcontainers.org/incus/docs/main/ (原文)

パッケージ

Incus の開発元は、通常リリースの tarball のみをリリースするため、公式の Incus パッケージはありません。Incus を実行するために使えるオプションを以下にいくつか示します。

Linux 上に Incus サーバーをインストールする

Incus はほとんどの一般的な Linux ディストリビューションで利用できます。インストール手順の詳細は、Incus のドキュメントを参照してください。

https://incus-ja.readthedocs.io/ja/latest/installing/ (日本語訳)
https://linuxcontainers.org/incus/docs/main/installing/ (原文)

Incus クライアントの Homebrew パッケージ

HomeBrew 経由で、Linux と macOS 向けにクライアントツールが利用できます。

https://formulae.brew.sh/formula/incus

Incus クライアントの Chocolatey パッケージ

Chocolatey 経由で、Windows ユーザー向けにクライアントツールが利用できます。

https://community.chocolatey.org/packages/incus/6.2.0

Incus クライアントの Winget パッケージ

Winget 経由で、Windows ユーザー向けにクライアントツールが利用できます。

https://winstall.app/apps/LinuxContainers.Incus

サポート

月次のフィーチャーリリースは、次のリリースがリリースされるまでのみサポートされます。より長いサポート期間と少ない変更頻度が必要な場合、代わりに Incus 6.0 LTS の使用を検討すべきです。

コミュニティサポートはこちらから : https://discuss.linuxcontainers.org
商用サポートはこちらから : https://zabbly.com/incus
バグはこちらから報告できます : https://github.com/lxc/incus/issues