Incus 6.2 リリースのお知らせ¶
2024/05/31
はじめに ¶
Incus チームは、Incus 6.2 のリリースのアナウンスができてうれしいです!
このリリースには、テキサス大学オースティン校の学生による変更の第 2 弾と、その他いくつかの機能追加と改良が含まれています。
いつものように、オンラインでご自身で試せます: 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 init
、incus 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