ニュース

Incus 6.3 リリースのお知らせ

2024/07/12

はじめに

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

image|690x486

このリリースのハイライトは、OCI アプリケーションコンテナの初期サポートです。
これにより、一般的な Docker/OCI コンテナイメージを直接 Incus で使用できるようになります。このコンテナは、通常のシステムコンテナや仮想マシンと一緒に使用できます。

いつものように、オンラインでご自身で試せます: https://linuxcontainers.org/incus/try-it/
注意: オンラインデモ環境は Docker Hub にはアクセスできません。

Enjoy!

新機能

OCI アプリケーションコンテナの初期サポート

Incus は、Docker Hub のようなアプリケーションコンテナのリポジトリにアクセスし、イメージを取得し、Incus で使えるように変換(フラット化)し、そして、そこから作業用コンテナを作成できるようになりました。

このサポートは、OCI コンテナサポートの非常に初期の状態であり、ユーザーからのフィードバックにもとづいて埋める必要があるギャップがかなりあると思われます。しかし現在、同じシステムで Docker と Incus を同時に動かしているユーザーや、単一のソフトウェアを実行するためだけに Incus コンテナ内で Docker を使っているユーザーのような、多数のシンプルなケースでは、Incus は直接それを処理できるようになったはずです。

リソースリミット、システムコールインターセプションといったような、すべての Incus コンテナの設定オプションは、これらのコンテナにもすべて適用されます。また、これらはすべて、システムコンテナと同様の安全なコンテナ環境で実行されます。

stgraber@dakara:~$ incus remote add docker https://docker.io --protocol=oci
stgraber@dakara:~$ incus launch docker:mysql mysql \
> -c environment.MYSQL_DATABASE=wordpress \
> -c environment.MYSQL_USER=wordpress \
> -c environment.MYSQL_PASSWORD=wordpress \
> -c environment.MYSQL_RANDOM_ROOT_PASSWORD=1
Launching mysql

stgraber@dakara:~$ incus list mysql
+-------+---------+----------------------+------------------------------------------+-----------------+-----------+
| NAME  |  STATE  |         IPV4         |                   IPV6                   |      TYPE       | SNAPSHOTS |
+-------+---------+----------------------+------------------------------------------+-----------------+-----------+
| mysql | RUNNING | 172.17.250.26 (eth0) | 2602:fc62:c:250:216:3eff:fefa:468 (eth0) | CONTAINER (APP) | 0         |
+-------+---------+----------------------+------------------------------------------+-----------------+-----------+

stgraber@dakara:~$ incus launch docker:wordpress wordpress \
> -c environment.WORDPRESS_DB_HOST=172.17.250.26 \
> -c environment.WORDPRESS_DB_USER=wordpress \
> -c environment.WORDPRESS_DB_PASSWORD=wordpress \
> -c environment.WORDPRESS_DB_NAME=wordpress
Launching wordpress

stgraber@dakara:~$ incus list wordpress
+-----------+---------+-----------------------+-------------------------------------------+-----------------+-----------+
|   NAME    |  STATE  |         IPV4          |                   IPV6                    |      TYPE       | SNAPSHOTS |
+-----------+---------+-----------------------+-------------------------------------------+-----------------+-----------+
| wordpress | RUNNING | 172.17.250.119 (eth0) | 2602:fc62:c:250:216:3eff:fe61:c1fc (eth0) | CONTAINER (APP) | 0         |
+-----------+---------+-----------------------+-------------------------------------------+-----------------+-----------+
stgraber@dakara:~$

クラスター内のベースライン CPU 定義

これまでの Incus のライブマイグレーションの大きな制限の 1 つは、クラスター内のすべてのサーバーで同一の CPU が実行されている前提だったことです。2 つのシステム間で CPU が異なる場合、ライブマイグレーションは失敗するか、あとでクラッシュするかです。

これは Incus が、実行しているマシンから、すべての CPU フラグを常に公開するためです。
これは、スタンドアロンのシステムで最大限のパフォーマンスを得るには適しています。しかし、異機種クラスターではうまく機能しません。

このリリースで、Incus は、特定のアーキテクチャーのすべてのサーバーで共通の CPU フラグの組を自動的に計算するようになります。そして、ライブマイグレーションが有効(migration.stateful=true)で実行されているすべてのインスタンスで CPU 定義として使用します。

io.busio.cache のファイルシステムサポート

io.busio.cache オプションは、少し前から VM のディスク用に存在していました。
io.bus では、virtio-scsivirtio-blknvme オプションが提供され、io.cache では nonewritebackunsafe キャッシュが使用できます。

これらの設定キーを、ディスクでなく、ファイルシステムを指定するときでもサポートするようになりました。
ファイルシステムを指定するときの値は少し異なり、io.busauto(デフォルト)、9pvirtiofs のいずれか、io.cachenone(デフォルト)、metadataunsafe をサポートします。

これにより、ファイルシステムが VM に公開される方法を正確に制御し、virtiofs を使用するときにキャッシュ動作を微調整できます。

incus top の改良

Incus 6.2 で、新たに incus top コマンドを導入しました。
このリリースでは、リモートサーバーに対しても動作し、クラスター化された環境を適切にサポートし、プロジェクトも処理することで、より有用になりました。

+---------+---------------+-------------+-----------+-----------+
| PROJECT | INSTANCE NAME | CPU TIME(S) |  MEMORY   |   DISK    |
+---------+---------------+-------------+-----------+-----------+
| default | incus-ui      | 63.40       | 12.76MiB  | 1.54GiB   |
+---------+---------------+-------------+-----------+-----------+
| default | kernel-test   | 1865037.10  | 578.01MiB | 32.84GiB  |
+---------+---------------+-------------+-----------+-----------+
| default | speedtest     | 84.10       | 23.14MiB  | 400.12MiB |
+---------+---------------+-------------+-----------+-----------+
| default | win11         | 1865.11     | 15.51GiB  |           |
+---------+---------------+-------------+-----------+-----------+
| demo    | mysql         | 6.77        | 464.20MiB | 276.62MiB |
+---------+---------------+-------------+-----------+-----------+
| demo    | wordpress     | 1.81        | 53.66MiB  | 386.62MiB |
+---------+---------------+-------------+-----------+-----------+
| vpn     | vpn-dev       | 102.97      | 36.83MiB  | 412.00MiB |
+---------+---------------+-------------+-----------+-----------+
| vpn     | vpn-lab       | 57.29       | 27.03MiB  | 347.75MiB |
+---------+---------------+-------------+-----------+-----------+
Press 'd' + ENTER to change delay
Press 's' + ENTER to change sorting method
Press CTRL-C to exit

Delay: 10s
Sorting Method: Alphabetical

サーバーリソースの CPU フラグ

マシンのハードウェア構成に関する多くの詳細情報を公開するのに使うリソース API が更新され、CPU フラグが公開されるようになりました。

この機能は、先に紹介したベースライン CPU 機能の実装に必要でした。
新しいデータは、API で直接見つけることができ、CPU コアごとに提供されます。

stgraber@dakara:~$ incus query /1.0/resources | jq .cpu.sockets[0].cores[0].flags -c
["fpu","vme","de","pse","tsc","msr","pae","mce","cx8","apic","sep","mtrr","pge","mca","cmov","pat","pse36","clflush","mmx","fxsr","sse","sse2","ht","syscall","nx","mmxext","fxsr_opt","pdpe1gb","rdtscp","lm","constant_tsc","rep_good","nopl","xtopology","nonstop_tsc","cpuid","extd_apicid","aperfmperf","rapl","pni","pclmulqdq","monitor","ssse3","fma","cx16","sse4_1","sse4_2","x2apic","movbe","popcnt","aes","xsave","avx","f16c","rdrand","lahf_lm","cmp_legacy","svm","extapic","cr8_legacy","abm","sse4a","misalignsse","3dnowprefetch","osvw","ibs","skinit","wdt","tce","topoext","perfctr_core","perfctr_nb","bpext","perfctr_llc","mwaitx","cpb","cat_l3","cdp_l3","hw_pstate","ssbd","mba","ibrs","ibpb","stibp","vmmcall","fsgsbase","bmi1","avx2","smep","bmi2","erms","invpcid","cqm","rdt_a","rdseed","adx","smap","clflushopt","clwb","sha_ni","xsaveopt","xsavec","xgetbv1","xsaves","cqm_llc","cqm_occup_llc","cqm_mbm_total","cqm_mbm_local","clzero","irperf","xsaveerptr","rdpru","wbnoinvd","cppc","arat","npt","lbrv","svm_lock","nrip_save","tsc_scale","vmcb_clean","flushbyasid","decodeassists","pausefilter","pfthreshold","avic","v_vmsave_vmload","vgif","v_spec_ctrl","umip","pku","ospke","vaes","vpclmulqdq","rdpid","overflow_recov","succor","smca","fsrm","debug_swap"]

incus-simplestreams add の 統合イメージサポート

incus-simplestreams ツールは、simplestream インデックスフォーマットを使って、Incus イメージをホスティングする静的な Web サーバーを管理するために使います。このツールが更新され、分割イメージだけでなく統合イメージもサポートされるようになりました。

Incus イメージは、メタデータファイルと 1 つの rootfs もしくはルートディスクからなる 2 つのファイルで構成される場合と、メタデータと rootfs もしくはルートディスクを、ディレクトリー/ファイルとして含む単一の tarball で構成される場合(統合イメージ)があります。

統合イメージをサーバーに追加するには、incus-simplestreams add を、通常使うケースのように 2 つのファイルを指定するのではなく、単一のファイルを指定するだけです。

libovsdb 使用への移行の完了

過去 4〜5 リリースで、直接 ovs-vsctlovn-nbctlovn-sbctl といったコマンドラインツールを直接呼び出す実装から、代わりにネイティブの OVSDB クライアントを使う実装に徐々に移行してきました。

この作業がついに終わり、Incus では、OVN を使うために、もうシステム上に OVS/OVN ツールが存在している必要はなくなりました。

新しいロジックでは、関連するデータベースへの永続的な接続を維持し、OVN とのやり取りに必要な時間と CPU オーバーヘッドを大幅に削減します。この永続的な接続により、以前のアプローチでは不可能だった、OVN から直接イベントを受信して​​反応することも可能になります。

すべての変更点

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

すべてのChangeLogを見る
  • incus/project: Fix bad --show-access output
  • cmd/incus-user: Avoid double user-user- in network description
  • Translated using Weblate (German)
  • Translated using Weblate (Japanese)
  • incus/admin_sql: Fix description
  • incus/storage_bucket: Fix string quoting
  • incus/profile: Fix examples
  • incus/project: Fix examples
  • incus/snapshot: Improve restore example
  • incus/storage_bucket: Fix typoes in examples
  • incus/storage_bucket: Fix export example
  • incus/exec: Add some examples
  • i18n: Update translation templates
  • incus-user: Don't needlessly update the default profile
  • incus/top: Support remote servers
  • incus/top: Properly handle projects
  • incus/top: Handle clusters
  • incusd/instance/qemu: Avoid endianness issues with vsockIDInt
  • internal/linux: Define some IOCTLs
  • incusd/instance/qemu: Don't use hardcoded ioctl
  • incusd/storage/btrfs: Don't use hardcoded ioctl
  • incusd/devices: Simplify ioctl logic
  • shared/cliconfig: Remove old migration logic
  • shared/cliconfig: Generalize logic
  • incusd/seccomp: Fix sysinfo logic on 32bit platforms
  • shared/cliconfig: Always fill in the protocol
  • incus: Generalize image server logic
  • incus/console: Re-shuffle logic a bit
  • incus: Handle stopped containers in --console
  • incus/console: Don't export an internal function
  • doc: update documentation for forming cluster with existing server
  • github: Cleanup workflow file
  • github: Build go tip
  • github: Change Go releases in tests
  • test/lint/golangci: Properly pull the parent ref
  • cmd/incusd: Fix typo in forknet
  • api: resources_cpu_flags
  • shared/api: Add Flags to ResourceCPUCore
  • doc/rest-api: Refresh swagger YAML
  • incusd/resources: Add CPU Flags to ResourceCPUCore
  • incusd/network/ovn: Port CreateLogicalRouterRoute to libovsdb
  • incusd/network/ovn: Port DeleteLogicalRouterRoute to libovsdb
  • incusd/network: Update for OVN function changes
  • incusd/network/ovn: Port DeleteLogicalRouterPort to libovsdb
  • incusd/network/ovn: Remove LogicalRouterPortDeleteIPv6Advertisements
  • incusd/network: Update for OVN function changes
  • incusd/network/ovn: Port DeleteLogicalSwitch to libovsdb
  • incusd/network: Update for OVN function changes
  • incusd/network/ovn: Remove logicalSwitchFindAssociatedPortGroups
  • doc/instances_console: Tweak wording on SPICE clients
  • incusd/network/ovn: Special handling for Load Balancer table
  • incusd/network/ovn: Align functions context handling
  • incusd/network/ovn: Port DeleteLogicalSwitchDHCPOption to libovsdb
  • incusd/network/ovn: Port GetLogicalSwitchPortLocation to libovsdb
  • incusd/network/ovn: Port GetLogicalSwitchPortUUID to libovsdb
  • incusd/network/ovn: Port GetLogicalRouterPortHardwareAddress to libovsdb
  • incusd/network/ovn: Add GetLogicalRouter
  • incusd/network/ovn: Port DeleteLoadBalancer to libovsdb
  • incusd/network/acl: Update for OVN function changes
  • incusd/network: Update for OVN function changes
  • incusd/network: Simplify OVN network deletion logic
  • incus/network_load_balancer: Fix example
  • i18n: Update translation templates
  • incusd/network/ovn: Port UpdateLogicalSwitchIPAllocation to libovsdb
  • incusd/network/ovn: Port UpdateLogicalSwitchDHCPv4Revervations to libovsdb
  • incusd/network/ovn: Port GetLogicalSwitchDHCPv4Revervations to libovsdb
  • incusd/network/ovn: Port GetLogicalSwitchDHCPOptions to libovsdb
  • incusd/network/ovn: Port UpdateLogicalSwitchDHCPv4Options to libovsdb
  • incusd/network/ovn: Port UpdateLogicalSwitchDHCPv6Options to libovsdb
  • incusd/network: Update for OVN function changes
  • incusd/networks: Properly finalize OVN networks
  • incusd/networks: Properly record description
  • incusd/response: Add Code function
  • incusd/operations: Implement Code function
  • incusd: Implement Code function
  • incus-agent: Implement Code function
  • client: Fix OIDC re-authentication on POST
  • client: Fix OIDC re-authentication on websocket
  • incus/network: Add missing stdin handling
  • i18n: Update translation templates
  • lxd-to-incus: Handle volume config keys
  • incusd/project: Don't fail creation on authorizer
  • doc/instance_units: Clarify usage
  • incusd/network/ovn: Port logicalSwitchPortACLRules to libovsdb
  • incusd/network/ovn: Port GetLogicalSwitchPorts to libovsdb
  • incusd/network/ovn: Port UpdateLogicalSwitchPortOptions to libovsdb
  • incusd/network/ovn: Port CreatePortGroup to libovsdb
  • incusd/network: Update for OVN function changes
  • incusd/device/nic: Update for OVN function changes
  • incusd/network/acl: Update for OVN function changes
  • incusd/network/ovn: Port GetPortGroupsByProject to libovsdb
  • incusd/network/ovn: Port CreateAddressSet to libovsdb
  • incusd/network/ovn: Port UpdateAddressSetAdd to libovsdb
  • incusd/network/ovn: Port UpdateAddressSetRemove to libovsdb
  • incusd/network/ovn: Port DeleteAddressSet to libovsdb
  • incusd/network/acl: Update for OVN function changes
  • incusd/network: Update for OVN function changes
  • incusd/network/ovn: Port UpdateLogicalSwitchPortLinkRouter to libovsdb
  • incusd/network/ovn: Port UpdateLogicalSwitchPortLinkProviderNetwork to libovsdb
  • incusd/network/ovn: Port GetLogicalSwitchIPs to libovsdb
  • incusd/network/ovn: Port GetLogicalSwitchPortDNS to libovsdb
  • incusd/network: Update for OVN function changes
  • incusd/network/ovn: Port UpdateLogicalSwitchPortDNS to libovsdb
  • incusd/network/ovn: Port UpdatePortGroupMembers to libovsdb
  • incusd/network/ovn: Port UpdateLogicalRouterPolicy to libovsdb
  • incusd/network: Update for OVN function changes
  • incusd/network/ovn: Port CreateLoadBalancer to libovsdb
  • incusd/network/ovn: Port GetLogicalRouterRoutes to libovsdb
  • incusd/network/ovn: Port DeleteLogicalRouterPeering to libovsdb
  • incusd/network: Update for OVN function changes
  • incusd/apparmor: Update for current QEMU
  • incusd/apparmor: Allow /dev/shm in forkproxy
  • incusd/network/ovn: Port CreateLogicalRouterPeering to libovsdb
  • incusd/network: Update for OVN function changes
  • Translated using Weblate (Chinese (Simplified))
  • incusd/network/ovn: Port logicalSwitchPortDeleteDNSOperations to libovsdb
  • incusd/network/ovn: Port DeleteLogicalSwitchPortDNS to libovsdb
  • incusd/network/ovn: Port logicalSwitchPortDeleteOperations to libovsdb
  • incusd/network/ovn: Port CleanupLogicalSwitchPort to libovsdb
  • incusd/network/ovn: Port aclRuleDeleteOperations to libovsdb
  • incusd/network/ovn: Port aclRuleAddOperations to libovsdb
  • incusd/network/ovn: Port ClearPortGroupPortACLRules to libovsdb
  • incusd/network/ovn: Port UpdatePortGroupPortACLRules to libovsdb
  • incusd/network/ovn: Port UpdateLogicalSwitchACLRules to libovsdb
  • incusd/network/ovn: Port UpdatePortGroupACLRules to libovsdb
  • incusd/network/acl: Update for OVN function changes
  • incusd/network: Update for OVN function changes
  • incusd/network/ovn: Remove nbctl
  • api: disk_io_bus_cache_filesystem
  • incusd/device/disk: Extend io.bus option
  • incusd/device/disk: Extend io.cache option
  • incusd/device/disk: Add support for io.cache on virtiofs
  • incusd/device/disk: Add support for io.bus on filesystems
  • incusd/instance/driver_qemu: Handle 9p being disabled
  • doc: Update configs
  • doc/installing: Update Debian/Ubuntu build instructions
  • doc/installing: Mention installing Go from upstream
  • incusd/instance/edk2: Add new package to track EDK2 firmwares
  • incusd/instance/qemu: Update to the new edk2 package
  • incusd/apparmor: Update to the new edk2 package
  • doc: Cleanup OVMF/EDK2 handling to cover aarch64
  • doc/installing: Use Incus 6.0.0 as example
  • incusd/instance/qemu: Fix handling of virtiofs-only disks
  • incus/storage_volume: Tweak help messages
  • i18n: Update translation templates
  • incus/storage_volume: Fix lint
  • doc/installing: Mention incus-tools package
  • incus-simplestreams: Add support for unified images
  • incus-simplestreams: Tweak help message
  • incus-simplestreams: Refactor unified logic
  • gomod: Update dependencies
  • incusd/apparmor: Allow devpts mounts
  • incusd: Improve profile rename errors
  • incusd/sys: Add cluster resources cache path
  • incusd/daemon: Locally cache other server resources
  • incusd/instance/drivers/qmp: Add QueryCPUModel
  • incusd/instance/qemu: Use cluster CPU flags for migration.stateful
  • incus-user: Use shorter interrface name for long UIDs
  • incusd/device/network: Fix Tap interface MTU when in OVN
  • incusd/isntance: Don't expose all internal flags in INFO message
  • incusd/instance/lxc: Allow calling Update from a Create operation
  • cmd/incusd: Add forknet dhcp
  • shared/subprocess: Allow building on Windows
  • api: instance_oci
  • client: Add basic OCI registry client
  • incus: Add OCI remote support
  • shared/cliconfig: Add OCI remote support
  • incusd: Add OCI registry support
  • incusd/instance/lxc: Basic OCI support
  • internal/instance: Add volatile.container.oci
  • incusd/instance/lxc: Add volatile.container.oci
  • incus: Add support for volatile.container.oci
  • incusd/instance: Handle OCI config on create from image
  • tests: Add basic OCI test
  • gomod: Update dependencies
  • doc: Update configs
  • doc: Add OCI to wordlist
  • i18n: Update translation templates
  • shared/subprocess: Fix gofmt
  • incusd/storage/lvmcluster: Don't allow buckets
  • incusd/storage/lvmcluster: Don't exclusively lock ISO volumes
  • incusd/device/disk: Allow attaching the same ISO to multiple instances
  • incusd/device/disk: Allow live-migration with agent/cloud-init disks
  • incusd/instance/qemu: Fix live-migration with agent/cloud-init disks
  • incusd/device/disk: Don't crash on uninitialized pool
  • incusd/storage/lvmcluster: Always use shared access
  • incusd/instance/lxc: Don't report filesystem metrics when no per-instance value
  • incus/top: Set interval to 10s (minimum server-side is 8)
  • incus/top: Hide zero values
  • incusd/device/disk: Mark virtual disks as always migratable
  • tests: Update metrics test for recent change

ドキュメント

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.3.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

Incus 6.0.1 LTS リリースのお知らせ

2024/06/28

はじめに

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

このリリースは、Incus 6.0 に対する初めてのバグ修正リリースであり、2029 年 6 月までサポートされます。

変更点

いつもどおり、このバグ修正リリースは、安定性とセキュリティー強化にフォーカスを当てています。

データのマイグレーションやデータベースの変更を必要とせず、ユーザーが予期しない動きの変化に直面するようなことにはならない、マイナーな改善もバックポートされています。

このような改良の数は、LTS ブランチ内では時間の経過とともに減少するでしょう。

このリリースのハイライトは次のとおりです:

  • ZFS プールに対する拡張されたソース書式(ミラー、raidz1/raidz2)
  • すべてのオブジェクト(インスタンス、プロファイル、イメージ、ストレージボリューム・バケット、ネットワーク)での、プロジェクトをまたぐリスト表示
  • インスタンス配置スクリプトレットで利用できる追加関数
  • CLI のすべての create サブコマンドがYAML 入力を受け付けるように
  • CLI のすべての list サブコマンドが出力カラムのカスタマイズを受け付けるように
  • migration.stateful 設定キーがコンテナにも拡張
  • OVN でのステートレスネットワーク ACL のサポート
  • インスタンスの uptime の出力
  • 新たな incus top コマンド(既存の metric API を使用)
  • incus info --resources 内のシステム負荷情報
  • incus info --resources 内の PCI デバイス情報
  • プロジェクトとインスタンスへ、誰がアクセスしたかを問い合わせる機能
  • プロジェクトの強制削除
  • incus-simplestreams のエイリアスの扱いの改良

コミットのすべてのリストは次のとおりです:

すべてのChangeLogを見る
  • doc/support: Update for LTS
  • incusd/network: Remove bridge.driver=native requirement for extended external_interfaces syntax
  • doc/network/bridge: Update extended external_interfaces documentation
  • incusd/storage/drivers/zfs: Simplify dataset receive and fix progress handling
  • gomod: Update dependencies
  • mini-oidc: Merge into main gomod
  • gomod: Update dependencies
  • go.mod: Bump package major version
  • global: Update Go package to v6
  • test: Update godeps.list
  • README: Update for godoc URLs
  • doc/rest-api: Refresh swagger YAML
  • cmd/incus: Fix import ordering
  • incusd: Remove unneeded import renames
  • incusd/instance: Fix duplicate import
  • doc/projects: Tweak examples
  • shared/api: Remove container resources (deprecated)
  • doc/rest-api: Refresh swagger YAML
  • incus/create: Remove dead code
  • i18n: Update translation templates
  • incusd/daemon: Remove old migration logic
  • incusd: Stop mentioning containers in resources
  • doc/rest-api: Use instances API in example
  • incusd/db/cluster: containers URLs aren't valid in Incus
  • incusd/instances: Don't start instances when evacuated
  • doc/installing: Sort source-build distro instructions
  • doc/installing: Add OpenSUSE source instructions
  • doc/installing: Add Alpine instructions
  • incus/aliases: fix completion regression
  • incus/snapshot: Fix deletion of snapshots containing colons
  • incusd/instance/drivers: Have SR-IOV get stable MACs
  • incusd/device/nic_sriov: Use stable MAC
  • incus/profile: Add support for creating from YAML
  • i18n: Update translation templates
  • incusd/instance/lxc: Only apply soft cgroup limits on cgroup1
  • incus/admin: Don't hide the sql command
  • grafana: Refresh dashboard
  • doc/metrics: Mention Loki in Grafana setup
  • grafana: Better filter Loki events by project
  • incusd/loki: Use hostname as default instance property on standalone systems
  • incusd/loki: Re-order config fields
  • incusd/loki: Allow overriding the location field
  • incusd/loki: Set location field to local hostname on standalone systems
  • incus/projct: Add support for creating project from yaml
  • i18n: Update translation templates
  • incusd/network/ovs: Port GetOVNEncapIP to libovsdb
  • incusd/network/ovs: Add some comments to GetOVNBridgeMappings
  • incusd/network/ovs: Port AddOVNBridgeMapping to libovsdb
  • incusd/network/ovs: Port RemoveOVNBridgeMapping to libovsdb
  • incusd/network/ovs: Port GetHardwareOffload to libovsdb
  • incusd/network/ovs: Port GetBridgePorts to libovsdb
  • incusd/network/ovs: Port UpdateBridgePortVLANs to libovsdb
  • incusd/network/ovs: Port AssociateInterfaceOVNSwitchPort to libovsdb
  • incusd/network/ovs: Switch Installed to checking for unix socket
  • incusd/network: Update for OVS function changes
  • Add missing SecureBoot firmware names
  • incus/snapshot: Add support for creating project from yaml
  • i18n: Update translation templates
  • api: network_zones_all_projects
  • shared/api: Add Project field to NetworkZone
  • incusd/network_zones: Add support for all-projects
  • doc/rest-api: Refresh swagger YAML
  • client: Add GetNetworkZonesAllProjects
  • incus/network_zone: Add --all-projects flag to list
  • i18n: Update translation templates
  • tests: Add all-projects network zone test
  • incusd/network/ovn: Port LogicalRouterAdd to libovsdb
  • incusd/network/ovn: Remove LogicalRouterAdd
  • incusd/network: Replace LogicalRouterAdd usage with CreateLogicalRouter
  • incusd/network/ovn: gofmt
  • incusd/cluster: Disable networks during evacuation
  • incusd/cgroup: Set hugepages reserved limits
  • incusd/storage/drivers: Introduce SparseFileWrapper
  • incusd/storage/drivers/vfs: Use SparseFileWrapper on backup import
  • incusd/storage/drivers/vfs: Use SparseFileWrapper on volume migration
  • incus/storage: Support creating storage pool from yaml
  • i18n: Update translation templates
  • incus/info: Show CPU architecture as separate line
  • i18n: Update translation templates
  • incus/cluster_group: Add yaml support for cluster group create
  • i18n: Update translation templates
  • gitignore: Add JetBrains
  • api: storage_zfs_vdev
  • doc: Update ZFS support for multiple block devices and vdev types in doc/reference/storage_zfs.md
  • incusd/storage/zfs: Add support for vdev type and multiple block devices
  • incus/info: Sorting network interfaces
  • incus/network_acl: Add cmd.Example for network acl create
  • i18n: Update translation templates
  • incus/network_forward: Add yaml example for create
  • i18n: Update translation templates
  • incus/config_template: Add file support for create
  • i18n: Update translation templates
  • incus/network_integrations: Add yaml support for create
  • i18n: Update translation templates
  • incusd/storage/s3: Use 'mc' client
  • incusd/storage: Switch to use minio's 'mc' client
  • gomod: Update dependencies
  • github: Download MinIO client
  • doc: Avoid MyST 3.0.0
  • incus/doc/installing.md: Add Docker information
  • doc: Add Podman to wordlist
  • incus/cluster: Add columns to list
  • i18n: Update translation templates
  • incus/project: Add customazible columns to list
  • i18n: Update translation templates
  • api: container_migration_stateful
  • internal/instance: Add migration.stateful to containers
  • incusd/instance/lxc: Add checks for migration.stateful
  • doc: Update configs
  • incus/network_load_balancer: add Example to create
  • i18n: Update translation templates
  • incus/network_zone: Add example for create command
  • i18n: Update translation templates
  • doc: Fix bad sphinx requirements
  • incusd/instances/qemu: Tweak secureboot firmware list
  • cmd/incus/admin_cluster: Add libexec path for incusd
  • incus/storage: Show usage when no driver passed
  • incusd/storage/drivers/dir: Tweak path validation
  • incusd/backup: Show profile list on lookup error
  • incusd/apparmor/lxc: Allow access to binfmt_misc
  • incusd/apparmor/lxc: Refresh generated rules
  • incusd/storage: Handle instance volume size on import
  • incus/profile: Add customizable columns to list
  • i18n: Update translation templates
  • incus/project: Fix help message for list
  • i18n: Update translation templates
  • api: profiles_all_projects
  • shared/api: Add Project field to Profile
  • client: Add GetProfilesAllProjects
  • incus/profile: Add all-projects to list
  • incusd/db/cluster: Add Project field to Profile
  • incusd/profile: Add all-projects support
  • doc/rest-api: Refresh swagger YAML
  • i18n: Update translation templates
  • incus/storage_volume: Clarify volume errors
  • incusd/apparmor/lxc: Fix access to kernel/security/apparmor
  • api: instances_scriptlet_get_instances
  • doc/instances/scriptlet: Add get_instances
  • incusd/scriptlet: Add get_instances
  • api: instances_scriptlet_get_cluster_members
  • doc/instances/scriptlet: Add get_cluster_members
  • incusd/scriptlet: Add get_cluster_members
  • api: Add network_acl_stateless
  • doc/network_acl: Add allow-stateless action
  • incusd/network/acl: Add allow-stateless action
  • incusd/network/ovn/nb: Port DeleteLogicalRouter to libovsdb
  • incusd/network/ovn/nb: Port CreateLogicalRouterSNAT to libovsdb
  • incusd/network: Update for OVS function changes
  • incusd/network/acl: Properly run instance counting outside of ACL loop
  • incusd/network/ovn: Wait up to 1s for dynamic IPs
  • incusd/network/ovn/nb: Port DeleteLogicalRouterNAT to libovsdb
  • incusd/network: Update for OVS function changes
  • shared/archive: Fix typo
  • incusd/cluster: Re-organize joining logic
  • incusd/cluster: Ignore OVN networks during joining
  • shared/archive: Properly anchor exclude rules
  • incusd/project: Rework low-level permission checks
  • incus/storage_bucket: Add example for storage bucket create
  • i18n: Update translation templates
  • incus/network_peer: Add example for create command
  • i18n: Update trasnlation templates
  • api: instance_state_started_at
  • shared/api: Add StartedAt to InstanceState
  • doc/rest-api: Refresh swagger YAML
  • incusd/instance: Add StartedAt to InstanceState
  • incus/info: Add Started field
  • incus/list: Add started at column
  • i18n: Update translation templates
  • Makefile: Cleanup gomod update
  • gomod: Update dependencies
  • tests/mini-oidc: Bump to go-jose/v4
  • client/connection: Add support for the socket existing in /run/incus
  • 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/project: Fix bad --show-access output
  • cmd/incus-user: Avoid double user-user- in network description
  • Translated using Weblate (German)
  • Translated using Weblate (Japanese)
  • incus/admin_sql: Fix description
  • incus/storage_bucket: Fix string quoting
  • incus/profile: Fix examples
  • incus/project: Fix examples
  • incus/snapshot: Improve restore example
  • incus/storage_bucket: Fix typoes in examples
  • incus/storage_bucket: Fix export example
  • incus/exec: Add some examples
  • i18n: Update translation templates
  • incus-user: Don't needlessly update the default profile
  • incus/top: Support remote servers
  • incus/top: Properly handle projects
  • incus/top: Handle clusters
  • incusd/instance/qemu: Avoid endianness issues with vsockIDInt
  • internal/linux: Define some IOCTLs
  • incusd/instance/qemu: Don't use hardcoded ioctl
  • incusd/storage/btrfs: Don't use hardcoded ioctl
  • incusd/devices: Simplify ioctl logic
  • shared/cliconfig: Remove old migration logic
  • shared/cliconfig: Generalize logic
  • incusd/seccomp: Fix sysinfo logic on 32bit platforms
  • shared/cliconfig: Always fill in the protocol
  • incus: Generalize image server logic
  • incus/console: Re-shuffle logic a bit
  • incus: Handle stopped containers in --console
  • incus/console: Don't export an internal function
  • doc: update documentation for forming cluster with existing server
  • github: Cleanup workflow file
  • github: Build go tip
  • github: Change Go releases in tests
  • test/lint/golangci: Properly pull the parent ref
  • cmd/incusd: Fix typo in forknet
  • api: resources_cpu_flags
  • shared/api: Add Flags to ResourceCPUCore
  • doc/rest-api: Refresh swagger YAML
  • incusd/resources: Add CPU Flags to ResourceCPUCore
  • doc/instances_console: Tweak wording on SPICE clients
  • incus/network_load_balancer: Fix example
  • i18n: Update translation templates
  • incusd/networks: Properly finalize OVN networks
  • incusd/networks: Properly record description
  • incusd/response: Add Code function
  • incusd/operations: Implement Code function
  • incusd: Implement Code function
  • incus-agent: Implement Code function
  • client: Fix OIDC re-authentication on POST
  • client: Fix OIDC re-authentication on websocket
  • incus/network: Add missing stdin handling
  • i18n: Update translation templates
  • lxd-to-incus: Handle volume config keys
  • incusd/project: Don't fail creation on authorizer
  • doc/instance_units: Clarify usage
  • incusd/apparmor: Update for current QEMU
  • incusd/apparmor: Allow /dev/shm in forkproxy
  • Translated using Weblate (Chinese (Simplified))
  • doc/installing: Update Debian/Ubuntu build instructions
  • doc/installing: Mention installing Go from upstream
  • doc/installing: Use Incus 6.0.0 as example

サポートとアップグレード

Incus 6.0 ブランチは 2029 年 6 月までサポートされます。常に最新の LTS バグ修正リリースを実行することを強く推奨します。

ダウンロード

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

Incus 6.1 リリースのお知らせ

2024/05/07

はじめに

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

このリリースは、Incus 6.0 LTS に続く初めての機能リリースです。
機能リリースは、通常は毎月のペースでリリースされ、次の機能リリースがリリースされるまでのみサポートされることに注意してください。重要な本番環境は、機能リリースではなく LTS リリースを使い続ける必要があります。

このリリースでは、全体を通して細かな使い勝手の向上がたくさん行われています。それらの多くは、テキサス大学オースティン校の学生からの初めてのコントリビューションです。Incus 6.2 では、さらに多くの機能が追加されるので期待してください!

image|690x459

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

Enjoy!

新機能

複雑な ZFS プールの作成

zfs ドライバーを使ってストレージプールを作成するときのキー source が拡張され、ストライピング、ミラーリング、raidz1、raidz2 を含む、より複雑な vdev の作成ができるようになりました。

指定例:

  • /dev/sda,/dev/sdb (striping, RAID0)
  • mirror=/dev/sda,/dev/sdb (mirroring, RAID1)
  • raidz1=/dev/sda,/dev/sdb,/dev/sdc,/dev/sdd,/dev/sde (raidz1, RAID5)
  • raidz2=/dev/sda,/dev/sdb,/dev/sdc,/dev/sdd,/dev/sde (raidz2, RAID6)

これを incus info --resources からのデータと組み合わせることで、API を通して複雑なストレージプールをデプロイできるようになります。

プロジェクトをまたいだプロファイルのリスト表示

すべての API オブジェクトで、プロジェクトをまたいだクエリーを追加する取り組みの一環として、すべてのプロジェクトをまたいだプロファイルのリスト表示ができるようになりました。

API レベルでは、/1.0/profiles API エンドポイントでの all-projects=true のサポートであり、CLI レベルでは次のようになります:

stgraber@dakara:~$ incus profile list --all-projects
+-----------------+---------+---------------------------------------+---------+
|     PROJECT     |  NAME   |              DESCRIPTION              | USED BY |
+-----------------+---------+---------------------------------------+---------+
| default         | default | Default Incus profile                 | 10      |
+-----------------+---------+---------------------------------------+---------+
| demo            | default | Default Incus profile                 | 12      |
+-----------------+---------+---------------------------------------+---------+
| lab-cgroup      | default | Default Incus profile                 | 2       |
+-----------------+---------+---------------------------------------+---------+
| lab-lvm-cluster | default | Default Incus profile                 | 3       |
+-----------------+---------+---------------------------------------+---------+
| lab-ovn-ic      | default | Default Incus profile                 | 10      |
+-----------------+---------+---------------------------------------+---------+
| vpn             | default | Default Incus profile for project vpn | 2       |
+-----------------+---------+---------------------------------------+---------+

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

プロジェクトをまたいだネットワークゾーンの一覧表示

すべての API オブジェクトのプロジェクトをまたいだクエリを追加する取り組みの一環として、すべてのプロジェクトをまたいだネットワークゾーンの一覧表示ができるようになりました。

API レベルでは、これは /1.0/network-zones API エンドポイントでの all-projects=true のサポートです。CLI レベルでは次のようになります:

stgraber@dakara:~$ incus network zone list --all-projects
+---------+--------------------------+-------------+---------+
| PROJECT |           NAME           | DESCRIPTION | USED BY |
+---------+--------------------------+-------------+---------+
| default | default.demo.example.net |             | 0       |
+---------+--------------------------+-------------+---------+
| foo     | foo.demo.example.net     |             | 0       |
+---------+--------------------------+-------------+---------+

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

インスタンス配置スクリプトレットで利用できる追加関数

Incus は、スクリプトレットというPython 風のスクリプトの使用によるインスタンス配置のカスタマイズをサポートしています。スクリプトレットを使用すると、リクエストに対するインスタンス、可能性のあるターゲット、理由についての情報が公開されます。

これらの値に加えて、これらのスクリプトレットでは、多数の関数も公開されています。情報をログに記録する機能、実際に最終的な配置を決定する機能、候補サーバーについての基本的な負荷情報を取得する機能が含まれてます。

これが、2 つの追加関数により拡張されるようになりました:

  • get_instances(location, project) => []api.Instance
  • get_cluster_members(group) => []api.ClusterMember

これらはすべて引数がオプショナルなので、すべてのインスタンスのリストやすべてのクラスターメンバーのリストを表示するために使用でき、配置スクリプトで非常に柔軟な対応ができるようになります。

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

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

incus CLI の create コマンドで与える YAML

多くの Incus コマンドは、create コマンドの一部として標準入力を通して YAML ファイルを読み取る機能をサポートしています。しかし、これらにはあまり一貫性がなく、十分に文書化されていません。現在、一貫性を保つ作業を行っており、次のコマンドでは、YAML 定義を読み取る機能をサポートするようになりました:

  • incus create & incus launch
  • incus cluster group create
  • incus network acl create
  • incus network forward create
  • incus network integration create
  • incus network load-balance create
  • incus network peer create
  • incus network zone create
  • incus profile create
  • incus project create
  • incus snapshot create
  • incus storage create
  • incus storage bucket create

これらのすべてで、対応する show コマンドで表示されるものと同じ YAML データを、オブジェクト生成の一部として設定するために、生成時に標準入力を通してコマンドに与えることができます。

incus CLI でのカラムのカスタマイズ

CLI での一貫性を徐々に高めているもう 1 つの機能が、リストコマンドで表示するカラムを選択する機能です。

この機能が拡張され、次のコマンドでサポートされるようになりました:

  • incus cluster list
  • incus config trust list
  • incus image list
  • incus list
  • incus profile list
  • incus project list
  • incus storage volume list
  • incus storage volume snapshot list
  • incus warning list

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

コンテナに対する migration.stateful 設定キー

migration.stateful 設定キーが拡張され、コンテナにも適用されるようになりました。

コンテナでプロセスの状態を記録し、リストアすることが必要な機能(CRIU)にアクセスするには、この設定を true に設定する必要があります。これは、基本的に、ステートフルストップ、ステートフルスナップショット、ライブマイグレーションを意味します。

Incus コンテナのライブマイグレーションやステートフルダンプを実行する CRIU の機能は非常に限定的で、一般的には機能していないと見なされているため、この変更は多くのユーザーに影響を与える可能性は低いです。
この変更には、CRIU を使用するアクションを誤って要求したユーザーに対して、より明確なエラーを提供するという利点があります。

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

OVN のステートレス ACL

新たに allow-stateless アクションが Incus のネットワーク ACL に追加されました。

名前の通り、これにより OVN 内にステートレスルールが作成されます。
これは、ステートフルルールに大きなコストがかかり、ステートレスルールとのマッチングが可能である状況(例: DNS インタラクション)に最適です。

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

インスタンスの uptime(開始時間)トラッキング

新たにインスタンスの状態のデータに StartedAt フィールドが追加されました。
これにより、インスタンスが起動したタイムスタンプが公開されます。そして、incus infoincus list でも利用できます。

stgraber@dakara:~$ incus info speedtest | grep Started
Started: 2024/04/29 11:03 EDT

stgraber@dakara:~$ incus list -cnstU
+-------------+---------+-----------------+----------------------+
|    NAME     |  STATE  |      TYPE       |      STARTED AT      |
+-------------+---------+-----------------+----------------------+
| centos3     | STOPPED | CONTAINER       |                      |
+-------------+---------+-----------------+----------------------+
| centos4     | STOPPED | CONTAINER       |                      |
+-------------+---------+-----------------+----------------------+
| fga         | STOPPED | VIRTUAL-MACHINE |                      |
+-------------+---------+-----------------+----------------------+
| incus-ui    | RUNNING | CONTAINER       | 2024/05/07 16:54 EDT |
+-------------+---------+-----------------+----------------------+
| kernel-test | RUNNING | VIRTUAL-MACHINE | 2024/05/07 15:43 EDT |
+-------------+---------+-----------------+----------------------+
| keybase     | STOPPED | CONTAINER       |                      |
+-------------+---------+-----------------+----------------------+
| ovn-test    | RUNNING | VIRTUAL-MACHINE | 2024/05/07 15:43 EDT |
+-------------+---------+-----------------+----------------------+
| speedtest   | RUNNING | CONTAINER       | 2024/04/29 11:03 EDT |
+-------------+---------+-----------------+----------------------+
| void        | STOPPED | VIRTUAL-MACHINE |                      |
+-------------+---------+-----------------+----------------------+
| win11       | STOPPED | VIRTUAL-MACHINE |                      |
+-------------+---------+-----------------+----------------------+

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

退避の間のネットワークハンドリングの改良

クラスターの退避を実行しているとき、退避の終了時にはネットワークはすべてシャットダウンされ、復元アクションの一部としてのみ再開されるようになりました。

これは、退避した Incus サーバーが、定義されたネットワークに対する仮想ルーターとして働かないことを保証し、システムのシャットダウンがネットワーク障害を引き起こす可能性が低くなるので、OVN ネットワーク環境で特に役に立ちます。

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

すべての変更点

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

すべてのChangeLogを見る
  • doc/support: Update for LTS
  • incusd/network: Remove bridge.driver=native requirement for extended external_interfaces syntax
  • doc/network/bridge: Update extended external_interfaces documentation
  • incusd/storage/drivers/zfs: Simplify dataset receive and fix progress handling
  • gomod: Update dependencies
  • mini-oidc: Merge into main gomod
  • gomod: Update dependencies
  • go.mod: Bump package major version
  • global: Update Go package to v6
  • test: Update godeps.list
  • README: Update for godoc URLs
  • doc/rest-api: Refresh swagger YAML
  • cmd/incus: Fix import ordering
  • incusd: Remove unneeded import renames
  • incusd/instance: Fix duplicate import
  • doc/projects: Tweak examples
  • shared/api: Remove container resources (deprecated)
  • doc/rest-api: Refresh swagger YAML
  • incus/create: Remove dead code
  • i18n: Update translation templates
  • incusd/daemon: Remove old migration logic
  • incusd: Stop mentioning containers in resources
  • doc/rest-api: Use instances API in example
  • incusd/db/cluster: containers URLs aren't valid in Incus
  • incusd/instances: Don't start instances when evacuated
  • doc/installing: Sort source-build distro instructions
  • doc/installing: Add OpenSUSE source instructions
  • doc/installing: Add Alpine instructions
  • incus/aliases: fix completion regression
  • incus/snapshot: Fix deletion of snapshots containing colons
  • incusd/instance/drivers: Have SR-IOV get stable MACs
  • incusd/device/nic_sriov: Use stable MAC
  • incus/profile: Add support for creating from YAML
  • i18n: Update translation templates
  • incusd/instance/lxc: Only apply soft cgroup limits on cgroup1
  • incus/admin: Don't hide the sql command
  • grafana: Refresh dashboard
  • doc/metrics: Mention Loki in Grafana setup
  • grafana: Better filter Loki events by project
  • incusd/loki: Use hostname as default instance property on standalone systems
  • incusd/loki: Re-order config fields
  • incusd/loki: Allow overriding the location field
  • incusd/loki: Set location field to local hostname on standalone systems
  • incus/projct: Add support for creating project from yaml
  • i18n: Update translation templates
  • incusd/network/ovs: Port GetOVNEncapIP to libovsdb
  • incusd/network/ovs: Add some comments to GetOVNBridgeMappings
  • incusd/network/ovs: Port AddOVNBridgeMapping to libovsdb
  • incusd/network/ovs: Port RemoveOVNBridgeMapping to libovsdb
  • incusd/network/ovs: Port GetHardwareOffload to libovsdb
  • incusd/network/ovs: Port GetBridgePorts to libovsdb
  • incusd/network/ovs: Port UpdateBridgePortVLANs to libovsdb
  • incusd/network/ovs: Port AssociateInterfaceOVNSwitchPort to libovsdb
  • incusd/network/ovs: Switch Installed to checking for unix socket
  • incusd/network: Update for OVS function changes
  • Add missing SecureBoot firmware names
  • incus/snapshot: Add support for creating project from yaml
  • i18n: Update translation templates
  • api: network_zones_all_projects
  • shared/api: Add Project field to NetworkZone
  • incusd/network_zones: Add support for all-projects
  • doc/rest-api: Refresh swagger YAML
  • client: Add GetNetworkZonesAllProjects
  • incus/network_zone: Add --all-projects flag to list
  • i18n: Update translation templates
  • tests: Add all-projects network zone test
  • incusd/network/ovn: Port LogicalRouterAdd to libovsdb
  • incusd/network/ovn: Remove LogicalRouterAdd
  • incusd/network: Replace LogicalRouterAdd usage with CreateLogicalRouter
  • incusd/network/ovn: gofmt
  • incusd/cluster: Disable networks during evacuation
  • incusd/cgroup: Set hugepages reserved limits
  • incusd/storage/drivers: Introduce SparseFileWrapper
  • incusd/storage/drivers/vfs: Use SparseFileWrapper on backup import
  • incusd/storage/drivers/vfs: Use SparseFileWrapper on volume migration
  • incus/storage: Support creating storage pool from yaml
  • i18n: Update translation templates
  • incus/info: Show CPU architecture as separate line
  • i18n: Update translation templates
  • incus/cluster_group: Add yaml support for cluster group create
  • i18n: Update translation templates
  • gitignore: Add JetBrains
  • api: storage_zfs_vdev
  • doc: Update ZFS support for multiple block devices and vdev types in doc/reference/storage_zfs.md
  • incusd/storage/zfs: Add support for vdev type and multiple block devices
  • incus/info: Sorting network interfaces
  • incus/network_acl: Add cmd.Example for network acl create
  • i18n: Update translation templates
  • incus/network_forward: Add yaml example for create
  • i18n: Update translation templates
  • incus/config_template: Add file support for create
  • i18n: Update translation templates
  • incus/network_integrations: Add yaml support for create
  • i18n: Update translation templates
  • incusd/storage/s3: Use 'mc' client
  • incusd/storage: Switch to use minio's 'mc' client
  • gomod: Update dependencies
  • github: Download MinIO client
  • doc: Avoid MyST 3.0.0
  • incus/doc/installing.md: Add Docker information
  • doc: Add Podman to wordlist
  • incus/cluster: Add columns to list
  • i18n: Update translation templates
  • incus/project: Add customazible columns to list
  • i18n: Update translation templates
  • api: container_migration_stateful
  • internal/instance: Add migration.stateful to containers
  • incusd/instance/lxc: Add checks for migration.stateful
  • doc: Update configs
  • incus/network_load_balancer: add Example to create
  • i18n: Update translation templates
  • incus/network_zone: Add example for create command
  • i18n: Update translation templates
  • doc: Fix bad sphinx requirements
  • incusd/instances/qemu: Tweak secureboot firmware list
  • cmd/incus/admin_cluster: Add libexec path for incusd
  • incus/storage: Show usage when no driver passed
  • incusd/storage/drivers/dir: Tweak path validation
  • incusd/backup: Show profile list on lookup error
  • incusd/apparmor/lxc: Allow access to binfmt_misc
  • incusd/apparmor/lxc: Refresh generated rules
  • incusd/storage: Handle instance volume size on import
  • incus/profile: Add customizable columns to list
  • i18n: Update translation templates
  • incus/project: Fix help message for list
  • i18n: Update translation templates
  • api: profiles_all_projects
  • shared/api: Add Project field to Profile
  • client: Add GetProfilesAllProjects
  • incus/profile: Add all-projects to list
  • incusd/db/cluster: Add Project field to Profile
  • incusd/profile: Add all-projects support
  • doc/rest-api: Refresh swagger YAML
  • i18n: Update translation templates
  • incus/storage_volume: Clarify volume errors
  • incusd/apparmor/lxc: Fix access to kernel/security/apparmor
  • api: instances_scriptlet_get_instances
  • doc/instances/scriptlet: Add get_instances
  • incusd/scriptlet: Add get_instances
  • api: instances_scriptlet_get_cluster_members
  • doc/instances/scriptlet: Add get_cluster_members
  • incusd/scriptlet: Add get_cluster_members
  • api: Add network_acl_stateless
  • doc/network_acl: Add allow-stateless action
  • incusd/network/acl: Add allow-stateless action
  • incusd/network/ovn/nb: Port DeleteLogicalRouter to libovsdb
  • incusd/network/ovn/nb: Port CreateLogicalRouterSNAT to libovsdb
  • incusd/network: Update for OVS function changes
  • incusd/network/acl: Properly run instance counting outside of ACL loop
  • incusd/network/ovn: Wait up to 1s for dynamic IPs
  • incusd/network/ovn/nb: Port DeleteLogicalRouterNAT to libovsdb
  • incusd/network: Update for OVS function changes
  • shared/archive: Fix typo
  • incusd/cluster: Re-organize joining logic
  • incusd/cluster: Ignore OVN networks during joining
  • shared/archive: Properly anchor exclude rules
  • incusd/project: Rework low-level permission checks
  • incus/storage_bucket: Add example for storage bucket create
  • i18n: Update translation templates
  • incus/network_peer: Add example for create command
  • i18n: Update trasnlation templates
  • api: instance_state_started_at
  • shared/api: Add StartedAt to InstanceState
  • doc/rest-api: Refresh swagger YAML
  • incusd/instance: Add StartedAt to InstanceState
  • incus/info: Add Started field
  • incus/list: Add started at column
  • i18n: Update translation templates
  • Makefile: Cleanup gomod update
  • gomod: Update dependencies
  • tests/mini-oidc: Bump to go-jose/v4
  • client/connection: Add support for the socket existing in /run/incus

ドキュメント

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.1.0

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

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

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

サポート

現在は初期段階ですので、Incus の各リリースは、次のリリースが出るまでしかサポートされません。LXC と LXCFS のリリースと合わせて LTS リリースを計画していますので、この状況はここ数ヶ月で変わるでしょう。

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

Incus 6.0 LTS リリースのお知らせ

2024/04/04

はじめに

Incus チームが Incus 6.0 LTS のリリースをお知らせできることは、大きな誇りであり喜びです。

Incus は、最新のシステムコンテナおよび仮想マシンのマネージャーで、LXD を最初に開発したチームにより開発とメンテナンスが行われています。Apache 2.0 ライセンスのもとでリリースされており、Linux Containersプロジェクトの一部として、コミュニティ主導で運営されています。

Incus はクラウドのような環境を提供し、あらかじめ作成されたイメージからインスタンスを作成し、最大 50 台のサーバーをシームレスにクラスター化する機能を含む、さまざまな機能を提供します。

複数の異なるローカルもしくはリモートのストレージオプション、従来型もしくは完全分散ネットワークをサポートし、完全な REST API と、Ansible や Terraform/OpenTofu などの一般的なツールとの統合を含む、一般的なクラウド機能を提供します。

image|690x489

このリリースは Incus にとって大きなマイルストーンであり、毎月のフィーチャーリリースが適さない本番環境での使用に適した、拡張サポート付きの最初のリリースです。

このリリースが、LXC 6.0 LTSLXCFS 6.0 LTS に加わり、今回の LTS リリースを締めくくります。

姉妹プロジェクトと同様に、Incus 6.0 LTS は 2029 年 6 月までサポートされます。
最初の 2 年間は、バグとセキュリティの修正に加えて、小規模なユーザビリティの改善が行われ、不定期のポイントリリース(6.0.x)を通して提供されます。その最初の 2 年間の後、Incus 6.0 LTS は、サポート期間の 5 年間の残りはセキュリティ修正のみのメンテナンスに移行します。

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

Enjoy!

PS: Incus は 70 名を超える個人コントリビューターの作業のおかげで可能になりました。

Incus 0.7 からの変更

コンテナのスワップに対する制限

コンテナ向けの既存の設定である limits.memory.swap が拡張され、バイト単位でも指定できるようになりました。

今回の機能追加で、動作は次のようになります:

  • limits.memory.swap=true => コンテナはスワップ可能(デフォルト)
  • limits.memory.swap=false => コンテナはスワップされるべきではない(最小限のスワップ)
  • limits.memory.swap=256MiB => コンテナは(limits.memory で設定されたメモリー制限に加えて)256MiB までのスワップスペースを使用できる

例(cgroup2 を使ったシステム):

stgraber@dakara:~$ incus launch images:debian/12 d12 -c limits.memory=1GiB
Launching d12
stgraber@dakara:~$ incus exec d12 bash
root@d12:~# free -m
               total        used        free      shared  buff/cache   available           
Mem:            1024          21         983           0          19        1002
Swap:              0           0           0
root@d12:~#
exit
stgraber@dakara:~$ incus config set d12 limits.memory.swap=128MiB
stgraber@dakara:~$ incus exec d12 bash
root@d12:~# free -m      
               total        used        free      shared  buff/cache   available
Mem:            1024          21         983           0          19        1002
Swap:            128           0         128
root@d12:~#
exit

新しいシェル補完メカニズム

このリリースで、手動でメンテナンスしてた bash 補完(completion)スクリプトからの移行を完了し、コマンドラインツールから直接補完スクリプトを生成できるようになりました。

補完プロファイルが次に対して利用できるようになりました:

  • bash
  • fish
  • powershell
  • zsh

プロファイルは incus completion <shell>(例: incus completion bash)で呼び出せます。しかしこれは通常、Incus パッケージのビルドプロセスの一部としてパッケージャーによって行われます。

外部ブリッジインターフェースの作成

外部インターフェース向けの管理ネットワークブリッジの設定構文である bridge.external_interfaces が拡張され、VLAN インターフェースの作成と接続ができるようになりました。

stgraber@dakara:~$ incus network set incusbr0 bridge.external_interfaces=vlan60/enp35s0/60
stgraber@dakara:~$ ip link show dev vlan60
269: vlan60@enp35s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master incusbr0 state LOWERLAYERDOWN mode DEFAULT group default qlen 1000
    link/ether 00:23:a4:01:01:6f brd ff:ff:ff:ff:ff:ff
stgraber@dakara:~$ incus network unset incusbr0 bridge.external_interfaces
stgraber@dakara:~$ ip link show dev vlan60
Device "vlan60" does not exist.
stgraber@dakara:~$

リモートストレージからのディスクがアタッチされたVMのライブマイグレーション

改善を続ける VM のライブマイグレーションサポートの拡張として、"remote" のストレージプール(ceph もしくは lvmcluster)から追加ディスクがアタッチされた仮想マシンが、仮想マシンと一緒にライブマイグレーションされるようになりました。

これを行うためのユーザーアクションは不要です。以前は、マニュアルによる incus move --target やクラスター退避によるライブマイグレーションを拒絶していた仮想マシンが、別のサーバーに適切にライブマイグレーションされるのがわかります。

incus info --resources 中のシステム情報

incus info --resources の出力に、新たに System セクションが追加されました。

stgraber@dakara:~$ incus info --resources
System:
  UUID: 88eecd60-34fc-9f97-48f5-fc34979f48f6
  Vendor: ASUS
  Product: System Product Name
  Family: To be filled by O.E.M.
  Version: System Version
  SKU: SKU
  Serial: System Serial Number
  Type: physical
  Chassis:
      Vendor: Default string
      Type: Desktop
      Version: Default string
      Serial: Default string
  Motherboard:
      Vendor: ASUSTeK COMPUTER INC.
      Product: ProArt B550-CREATOR
      Serial: 210382121300122
      Version: Rev X.0x
  Firmware:
      Vendor: American Megatrends Inc.
      Version: 2803
      Date: 04/28/2022

 [snip...]

この情報にアクセスできることは、incus info --resources--target 引数とともに使い、特定のサーバーについて問い合わせたり、すべてのファームウェアが最新であることを確認したり、どのマシンを扱っているかをチェックしたりというように、クラスター環境で特に役に立ちます。

この機能は University of Texas at Austin の学生によるコントリビューションです。

incus info --resources 中の USB デバイス

incus info --resources の出力に、新たに USB devices セクションが追加されました。

stgraber@dakara:~$ incus info --resources
[snip...]

USB devices:
  Device 0:
    Vendor: Intel Corp.
    Vendor ID: 8087
    Product: AX200 Bluetooth
    Product ID: 0029
    Bus Address: 1
    Device Address: 6
  Device 1:
    Vendor: Corsair
    Vendor ID: 1b1c
    Product: H150iRGBPROXT
    Product ID: 0c22
    Bus Address: 1
    Device Address: 5
  Device 2:
    Vendor: ASUSTek Computer, Inc.
    Vendor ID: 0b05
    Product: AURA LED Controller
    Product ID: 19af
    Bus Address: 1
    Device Address: 2
  Device 3:
    Vendor: Realtek Semiconductor Corp.
    Vendor ID: 0bda
    Product: TX42C500
    Product ID: 4933
    Bus Address: 5
    Device Address: 2
  Device 4:
    Vendor: Blue Microphones
    Vendor ID: b58e
    Product: Yeti Stereo Microphone
    Product ID: 9e84
    Bus Address: 5
    Device Address: 15
  Device 5:
    Vendor: Yubico.com
    Vendor ID: 1050
    Product: YubiKey FIDO+CCID
    Product ID: 0406
    Bus Address: 5
    Device Address: 29
  Device 6:
    Vendor: Logitech, Inc.
    Vendor ID: 046d
    Product: HD Pro Webcam C920
    Product ID: 082d
    Bus Address: 5
    Device Address: 17
  Device 7:
    Vendor: Powerware Corp.
    Vendor ID: 0592
    Product: Powerware UPS
    Product ID: 0002
    Bus Address: 7
    Device Address: 2

この情報は、USB デバイスをコンテナや仮想マシンに追加する場合に非常に役に立ちます。

この機能は University of Texas at Austin の学生によるコントリビューションです。

LXD 5.0 LTS からの変更点

LXD 5.0 LTS リリースからのユーザー向けに、削除された機能と、その後の LXD 機能リリースと Incus で追加された機能についての簡単なリストを示します。

削除された機能

Ubunttu や Canonical 固有の多数の機能が、Incus プロジェクト設立の一環として削除されました。
Incus 0.1 リリースのお知らせ に、削除された機能の全リストがあります。

ハイライト:

  • VFS idmap shifting 機能を使うようにして、(同じ機能である)shiftfs を削除しました
  • OpenID Connect を使うようにして、Canonical Candid を削除しました
  • OpenFGA を使うようにして、Canonical RBAC 認証を削除しました
  • Canonical MAAS 機能を削除しました(使用されていない機能)
  • OVN を使うようにして、Ubuntu Fan を削除しました
  • セキュリティ上の理由から、信頼トークンを使用するようにし、core.trust_password は削除しました

追加された機能

次は、LXD 5.0 LTS のリリース以来 2 年間で導入した多数の新機能から、いくつかハイライトを紹介します。

すべての変更点

Incus 0.7 からのすべての変更のリストは次のとおりです(翻訳なし):

すべてのChangeLogを見る
  • Translated using Weblate (Japanese)
  • Translated using Weblate (Japanese)
  • incus/image: Fix column handling with --all-projects
  • Replace util.ValueInSlice with slices.Contains
  • shared/util: Delete ValueInSlice function
  • incus/image: Fix column handling with --all-projects
  • incusd/instance/qemu: Relocate image requirement checks
  • doc/images: Add requirements.cdrom_agent
  • incusd/instance/qemu: Add support for requirements.cdrom_agent
  • incusd/device/disk: Fix incorrect block volume usage
  • Translated using Weblate (Japanese)
  • incusd/network/ovn: Use ParseIPToNet instead of manual IPToNet and net.ParseIP
  • incusd/network/ovn: Use listenAddressNet in family check
  • incusd/instance/drivers: Disable architecture check on incus cp with snapshots
  • Translated using Weblate (French)
  • incusd/network/bridge: Set local address on all VXLAN tunnels
  • incus/instance/qemu: Fix RecordOutput
  • incus: add completions for instance actions and snapshots
  • incus: add completions for profiles
  • incusd/network/ovn: Introduce get helper
  • incusd/network/ovn: Add some missing indices
  • incusd/network/ovn: Use get helper
  • incusd/network/ovn: Fix LogicalSwitchPortIPs logic
  • incusd/network/bridge: Fix gofmt
  • incusd/network/ovn: Fix gofmt
  • cmd/incus: Use proper timestamp check
  • cmd/incus: Use consistent date format and timezone
  • client: Rename network_peer for consistency
  • cmd/incusd: Rename network_peer to network_peers
  • shared/api: Rename network_allocation for consistency
  • incusd/db: Fix comment typoes
  • incusd/db/generate: Fix bad camel case handling
  • incusd/db/network_peers: Fix duplicate type definitions
  • incusd/auth: Drop Permission type
  • incusd/auth: Add boilerplate doc strings
  • incusd/images: Properly handle null creation and expiry dates
  • incus: add completions for remotes
  • incus: add completions for projects
  • incusd/images: Fix reporting of images in multiple projects
  • github: Add static build of lxd-to-incus
  • lxd-to-incus: Add support for Alpine service name
  • lxd-to-incus: Re-organize target list
  • lxd-to-incus: Add support for APK
  • Makefile: Add OVN IC to update-ovsdb
  • incusd/network: Update OVS/OVN schemas
  • incusd/network/ovn: Add IC clients
  • incusd/network/ovn: Add GetName to NB client
  • incusd/network/ovn: Add GetGateways to ICSB
  • incusd/network/ovn: Introduce new errors
  • incusd/network/ovn: Add CreateTransitSwitch and DeleteTransitSwitch to ICNB
  • incusd/device/gpu_sriov: Add locking
  • incusd/device/gpu_sriov: Re-locate vfio-pci loading
  • incusd/device/gpu_sriov: Rework VF allocation logic
  • incus/remote: Add a generate-certificate sub-command
  • i18n: Update translation templates
  • incusd/drivers/qmp: Add SetBlockThrottle
  • incusd/device/disk/config: Add DiskLimits
  • incusd/device/disk: Re-shuffle limit parsing
  • incusd/device/disk: Add disk limits on VMs
  • incusd/device/disk: Support live limits update for VMs
  • incusd/instance/qemu: Support disk I/O limits
  • incus/remote: Add missing docstrings
  • incusd/certificates: Improve token handling when clustered
  • cmd/incusd/api_1.0: Update context
  • cmd/incusd/api_cluster: Update context
  • cmd/incusd/api_internal: Update context
  • cmd/incusd/daemon: Update context
  • cmd/incusd/api_project: Update context
  • cmd/incusd/certificates: Update context
  • cmd/incusd/images: Update context
  • cmd/incusd/instance: Update context
  • cmd/incusd/network: Update context
  • cmd/incusd/operations: Update context
  • cmd/incusd/profiles: Update context
  • cmd/incusd/storage: Update context
  • cmd/incusd/warnings: Update context
  • incusd/devices: Skip isolated threads from NUMA CPUs
  • incusd/devices: Restrict CPU threads by NUMA node
  • incusd/instance/qemu: Add support for limits.cpu.nodes
  • incusd/device/gpu: Add support for limits.cpu.nodes for VF selection
  • incusd: Fix import shadowing
  • incusd/images: Fix potential race condition
  • incusd/instance/qemu: Add support for NUMA node restrictions for memory
  • incusd/apparmor/qemu: Silence apparmor failures
  • incusd/network/ovs: Introduce new errors
  • incusd/network/ovn/nb: Move SetChassisGroupPriority to new function signature
  • incusd/network/ovn/sb: Move GetLogicalRouterPortActiveChassisHostname to new function signature
  • incusd/network/ovs: Move GetBridge to new function signature
  • incusd/network/ovs: Move CreateBridge to new function signature
  • incusd/network/ovs: Move DeleteBridge to new function signature
  • incusd/network/ovs: Move CreateBridgePort to new function signature
  • incusd/network/ovs: Move GetChassisID to new function signature
  • incusd/network/ovs: Move GetOVNBridgeMappings to new function signature
  • incusd/network: Update for function changes
  • incusd/device/nic: Update for function changes
  • incusd: Update for function changes
  • doc: Fix bad snapshot syntax
  • Translated using Weblate (French)
  • doc: Fix token creation procedure
  • incusd/network/ovn/nb: Add GetLogicalSwitch
  • incusd/network/ovn/nb: Replace ChassisGroupChassisDelete with SetChassisGroupPriority
  • incusd/network/ovn/nb: Port CreateLogicalRouterPort to OVSDB
  • incusd/network/ovn/nb: Replace LogicalRouterPortLinkChassisGroup with CreateLogicalRouterPort
  • incusd/network/ovn/nb: Port CreateChassisGroup to OVSDB
  • incusd/network/ovn/nb: Port CreateLogicalSwitch to OVSDB
  • incusd/network/ovn: Update for function changes
  • incusd/network/ovn: Remove state references
  • incusd/state: Add OVNNB and OVNSB handles
  • incusd: Update to use state for OVN
  • incusd/device: Make init function return error
  • incusd/device: Add OVN check on nicOVN
  • client: Still return response on RawQuery error
  • incus/query: Respect --raw for errors
  • incusd/network/acl: Add OVN check
  • incusd/network: Make init function return error
  • incusd/network: Add OVN check on ovn driver
  • incusd/api: Re-order config checks
  • incusd: Add OVN loader
  • Translated using Weblate (French)
  • incusd/network/ovn/nb: Port CreateLogicalSwitchPort to OVSDB
  • incusd/network/ovn/nb: Port DeleteLogicalSwitchPort to OVSDB
  • incusd/network/ovn/nb: Port DeleteLogicalRouterPort to OVSDB
  • incusd/network/ovn: Update for function changes
  • incusd/network/ovs: Port GetOVNSouthboundDBRemoteAddress to OVSDB
  • incusd/network/ovs: Port DeleteBridgePort to OVSDB
  • incusd/network/ovs: Port GetInterfaceAssociatedOVNSwitchPort to OVSDB
  • incusd/network/ovs: Align GetChassisID with other functions
  • incusd: Update for OVS function changes
  • incusd/network/ovn/icsb: Fix bad DB schema
  • incusd/network/ovn/nb: Introduce GetLogicalRouterPort
  • incusd/network/ovn/nb: Extend OVNSwitchPortOpts to handle router ports
  • incusd/network/ovn/nb: Change type of RouterPort field to OVNRouterPort
  • incusd/network/ovn/nb: Port DeleteChassisGroup to OVSDB
  • incusd/network/ovn/icnb: Update DeleteTransitSwitch to handle missing switches
  • incusd/network/ovn: Update for function changes
  • Translated using Weblate (French)
  • incus/completion: do not add a space after remote names completion
  • incusd/device/disk: Disable virtiofsd caching
  • incus-agent: Cleanup mount logic
  • Translated using Weblate (French)
  • incus: expose parseVolume to entire package
  • incus: add completions for storage pools and volumes
  • incusd/device/gpu_sriov: Fix default handling
  • doc/packaging: Add mention of documentation
  • incusd/auth: Fix --all-projects for restricted users
  • doc: Add third party tools page
  • gomod: Update dependencies
  • incusd/auth/tls: Prevent project modifications
  • doc: Update wordlist
  • internal/usbid: allow path override of usb.ids path
  • incus/completion: fix image names completion
  • doc/environment: document INCUS_USBIDS_PATH
  • incusd/instance/qemu/agent: Check for semanage
  • incusd/project: Fix config name in ImageProjectFromRecord
  • incus/restart: Fix long description
  • i18n: Update translations
  • lxd-to-incus: Handle common existing bridges
  • shared/simplestreams: Remove defaultOS
  • shared/simplestreams: Add NewLocalClient
  • incus-simplestreams: Introduce new command
  • incus-simplestreams: Simplify delete logic
  • doc: Re-organize image server doc
  • doc: Add section for incus-simplestreams
  • incusd/seccomp: Add support for pidfd threads
  • incus: add completions for clusters
  • incus: add completions for cluster groups
  • incus: add completions for cluster roles
  • incus: add completions for config devices
  • incus: add completions for config templates
  • update translations
  • doc: Update references to mage docs
  • doc/backup: Remove bad reference
  • incus: add completions for network acls
  • shared/api: Add new structs to support configuration metadata
  • client: Add GetMetadataConfiguration
  • incusd: Rename documentation.go -> metadata.go
  • doc/rest-api: Refresh swagger YAML
  • shared/api/metadata: Add GetKeys to simplify usage
  • incusd: Add support for JWT authentication
  • gomod: Update dependencies
  • tests: Add tls2jwt tool
  • tests: Add JWT authentication test
  • api: auth_tls_jwt
  • doc/authentication: Add section on JWT
  • doc/instances: Remove size.state requirement for live migration
  • incusd/instance/qemu: Allow live migration without size.state
  • shared/idmap: Support uid/gid in subuid/subgid
  • shared/cliconfig: Copy clientcerts on remote copy
  • shared/cliconfig: Add HasRemoteClientCertificate
  • shared/cliconfig: Support per-remote client certificates
  • doc: Add clientcerts
  • incusd/cluster/config: Add oidc.claim
  • incusd/auth/oidc: Add support for using a specific claim as username
  • incusd: Pass OIDC claim to verifier
  • api: oidc_claim
  • doc: Update configs
  • doc/howto/instances: Mention extra resources in ISO guidea
  • doc/installing: Add Debian backport
  • doc: Add backported to dictionary
  • lxd-to-incus: Add support for LXD 5.21
  • shared/cliconfig: Ensure client certificate key is 0600
  • api: device_usb_serial
  • doc: Add busnum, devnum and serial to USB devices
  • shared/api: Add Serial to ResourcesUSBDevice
  • incusd/resources: Add USB Serial
  • incusd/devices/usb: Add serial, busnum and devnum options
  • doc/rest-api: Refresh swagger YAML
  • incusd/instance/qemu: Fix handling of > 64 limits.cpu
  • incusd/device/gpu_sriov: Implement NUMA fallback
  • incus: add completions for network forwards
  • incus: add completions for network load balancers
  • shared/validate: Remove stringInSlice
  • shared/validate: Add And and Or functions
  • shared/util: Move ParseUint32Range
  • incusd/project: Update for ParseUint32Range
  • doc/instance_options: Remove mention of limits.cpu.nodes from container-only section
  • incusd/devices: Better handle bad config
  • api: numa_cpu_balanced
  • internal/instance: Add support for balanced NUMA nodes
  • doc: Update configs
  • incusd/instance/common: Add NUMA balancing
  • incusd/instance/lxc: Add support for balanced NUMA allocation
  • incusd/instance/qemu: Add support for balanced NUMA allocation
  • incusd/devices: Add support for balanced NUMA allocation
  • incusd/device/gpu_sriov: Simplify NUMA logic
  • doc/cloud-init: Don't mention non-existing remotes
  • doc/howto/images_remote: Fix wording around image servers
  • doc/benchmark: Fix install command
  • incusd/instance/common: Fix CanMigrate mutating devices
  • incusd/instance/qemu: Reduce agent queries
  • incusd/metrics: Don't filter out all server metrics
  • incusd/auth/tls: Include project restrictions for metrics certificates
  • incusd/auth/tls: Return project-aware checker for metrics
  • incusd/metrics: Use project-specific checker if no global access
  • internal/server/instance/lxd: add support for image.requirments.nesting
  • api: add image_restriction_nesting
  • doc/images: introduce requirements.nesting
  • Show the count values in snapshot count mismatch error
  • incus/admin/init: Use btrfs subvol in --auto
  • incus-migrate: Clarify that disk image files must be raw
  • incusd/network/ovn/icnb: Fix comment
  • incusd/project: Re-format the comments
  • incusd/project: Fix bad default value
  • doc: Update configs
  • incus/migrate: Add CSM support
  • incusd/storage/backend: Better handle name conflicts
  • incus-migrate: Support using the local server
  • api: network_integrations
  • shared/api: Add type and target_integration fields to NetworkPeersPost
  • incusd/db/cluster: Add networks_integrations
  • incusd/db/cluster: Re-generate schema
  • incusd/db/cluster: Add generated DB code for network integrations
  • incusd/db: Update network peer DB query functions
  • client: Add check for network_integrations in CreateNetworkPeer
  • incus/network/peer: Add support for network peer types
  • shared/api: Add network integrations
  • client: Add network integration functions
  • incus/network: Introduce support for integrations
  • incusd/auth: Add network integration functions
  • shared/api: Add lifecycle events for network integrations
  • incusd/lifecycle: Add network integration events
  • incusd: Add network integration API
  • incusd/db: Add GetNetworkPeersURLByIntegration
  • incusd/network_integration: Add UsedBy field
  • incusd/network_integrations: Add validator
  • incusd/network/ovn: Add support for peering with OVN IC
  • incusd/project: Add restricted.networks.integrations
  • incusd/project: Add NetworkIntegrationAllowed
  • incusd/network/integrations: Respect project restrictions
  • incusd/network/ovn: Add support for integration restrictions
  • incusd/auth/openfga: Update the model
  • incusd/auth/openfga: Update the generated model
  • incusd/auth/openfga: Handle model updates
  • incusd: Remove openfga.store.model_id
  • incusd/db/cluster: Remove openfga.store.model_id
  • doc/ovn_peers: Add remote peering
  • doc: Add documentation for network integrations
  • doc/rest-api: Refresh swagger YAML
  • i18n: Update translation templates
  • doc: Update configs
  • gomod: Update dependencies

ドキュメント

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

インストール

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

Linux パッケージ

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.0.0

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

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

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

LXD からの移行

マイグレーションツールである lxd-to-incus を使って、LXD から Incus への移行が適切に行えます。
このツールは 4.0 LTS からバグフィックスリリースである LXD 5.21 までのバージョンでテストされています。

このツールで、LXD から Incus への非常に速いマイグレーションが可能になり、潜在的なコンフリクトを事前に自動的にチェックします。

asciicast

詳細はこちらでご覧いただけます:
https://incus-ja.readthedocs.io/ja/latest/howto/server_migrate_lxd/ (日本語訳)
https://linuxcontainers.org/incus/docs/main/howto/server_migrate_lxd/) (原文)

サポート

Incus 6.0 LTS はトータルで 5 年間(2029 年 6 月)までサポートされます。

最初の 2 年間は、バグとセキュリティ修正、細かな使い勝手の改良を含む新しいポイントリリースが発行されます。最初の 2 年間のあと(Incus 7.0 LTS がリリースされたあと)、Incus 6.0 LTS は、残りの 3 年間はセキュリティ修正のみの提供に移行します。

これは、これまで 10 年間にわたって、我々の他のプロジェクトである LXC や LXCFS で行ってきたことと同じです。

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

Older news