Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add KubeVirt support #1334

Merged
merged 2 commits into from
Apr 1, 2022
Merged

Add KubeVirt support #1334

merged 2 commits into from
Apr 1, 2022

Conversation

rmohr
Copy link
Member

@rmohr rmohr commented Mar 18, 2022

KubeVirt is openstack config-drive compatible and uses the config-2 label (lower case).

xref coreos/fedora-coreos-tracker#1126

Testing ignition on a fcos machine where kubevirt injected the user-data shows this:

[core@vmi-fedora ~]$ sudo  /home/core/ignition --platform kubevirt --config-cache ignition.json --state-file state --stage fetch --log-to-stdout
INFO     : Ignition v2.13.0-58-g45429023
INFO     : Stage: fetch
INFO     : no config dir at "/usr/lib/ignition/base.d"
INFO     : no config dir at "/usr/lib/ignition/base.platform.d/kubevirt"
DEBUG    : parsed url from cmdline: ""
INFO     : no config URL provided
INFO     : reading system config file "/usr/lib/ignition/user.ign"
INFO     : no config at "/usr/lib/ignition/user.ign"
DEBUG    : creating temporary mount point
INFO     : op(1): [started]  mounting config drive
DEBUG    : op(1): executing: "mount" "-o" "ro" "-t" "auto" "/dev/disk/by-label/config-2" "/tmp/ignition-configdrive749859965"
INFO     : op(1): [finished] mounting config drive
INFO     : op(2): [started]  unmounting "/dev/disk/by-label/config-2" at "/tmp/ignition-configdrive749859965"
INFO     : op(2): [finished] unmounting "/dev/disk/by-label/config-2" at "/tmp/ignition-configdrive749859965"
DEBUG    : parsing config with SHA512: afca8c4e75ad3338fa48aa686c7bcc33973e6731e793e819d85950a41dfdd7d7b5dde42580ffbcc3bb3b76b9f9d7b438858b1e19380d3cb4a71d807f0823e20e
INFO     : fetch: fetch complete
INFO     : fetch: fetch passed
INFO     : Ignition finished successfully
[core@vmi-fedora ~]$ sudo cat ignition.json 
{"ignition":{"config":{"replace":{"verification":{}}},"proxy":{},"security":{"tls":{}},"timeouts":{},"version":"3.4.0-experimental"},"kernelArguments":{},"passwd":{"users":[{"name":"core","sshAuthorizedKeys":["ssh-rsa AAAAB3N..."]}]},"storage":{},"systemd":{}}
[core@vmi-fedora ~]$ sudo cat state
{"fetchedConfigs":[{"kind":"base","source":"system","referenced":false},{"kind":"base","source":"system","referenced":false},{"kind":"user","source":"kubevirt","referenced":false}],"luksPersistKeyFiles":null,"notatedDirectories":null}

If no user-data is present:

[core@vmi-fedora ~]$ sudo  /home/core/ignition --platform kubevirt --config-cache ignition.json --state-file state --stage fetch --log-to-stdout
INFO     : Ignition v2.13.0-58-g45429023-dirty
INFO     : Stage: fetch
INFO     : no config dir at "/usr/lib/ignition/base.d"
INFO     : no config dir at "/usr/lib/ignition/base.platform.d/kubevirt"
DEBUG    : parsed url from cmdline: ""
INFO     : no config URL provided
INFO     : reading system config file "/usr/lib/ignition/user.ign"
INFO     : no config at "/usr/lib/ignition/user.ign"
DEBUG    : creating temporary mount point
INFO     : op(1): [started]  mounting config drive
DEBUG    : op(1): executing: "mount" "-o" "ro" "-t" "auto" "/dev/disk/by-label/config-2" "/tmp/ignition-configdrive826956530"
INFO     : op(1): [finished] mounting config drive
INFO     : op(2): [started]  unmounting "/dev/disk/by-label/config-2" at "/tmp/ignition-configdrive826956530"
INFO     : op(2): [finished] unmounting "/dev/disk/by-label/config-2" at "/tmp/ignition-configdrive826956530"
DEBUG    : parsing config with SHA512: cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e
INFO     : not a config (empty): provider config was empty, continuing with empty cache config
INFO     : fetch: fetch complete
INFO     : fetch: fetch passed
INFO     : Ignition finished successfully
[core@vmi-fedora ~]$ sudo cat ignition.json 
{"ignition":{"config":{"replace":{"verification":{}}},"proxy":{},"security":{"tls":{}},"timeouts":{},"version":"3.4.0-experimental"},"kernelArguments":{},"passwd":{},"storage":{},"systemd":{}}[core@vmi-fedora ~]$ 
[core@vmi-fedora ~]$ sudo cat state 
{"fetchedConfigs":[{"kind":"base","source":"system","referenced":false}],"luksPersistKeyFiles":null,"notatedDirectories":null}

If no config-drive is present it just waits forever:

[core@vmi-fedora ~]$ sudo  /home/core/ignition --platform kubevirt --config-cache ignition.json --state-file state --stage fetch --log-to-stdout
INFO     : Ignition v2.13.0-58-g45429023-dirty
INFO     : Stage: fetch
INFO     : no config dir at "/usr/lib/ignition/base.d"
INFO     : no config dir at "/usr/lib/ignition/base.platform.d/kubevirt"
DEBUG    : parsed url from cmdline: ""
INFO     : no config URL provided
INFO     : reading system config file "/usr/lib/ignition/user.ign"
INFO     : no config at "/usr/lib/ignition/user.ign"
DEBUG    : config drive ("/dev/disk/by-label/config-2") not found. Waiting...
DEBUG    : config drive ("/dev/disk/by-label/config-2") not found. Waiting...
DEBUG    : config drive ("/dev/disk/by-label/config-2") not found. Waiting...
DEBUG    : config drive ("/dev/disk/by-label/config-2") not found. Waiting...
DEBUG    : config drive ("/dev/disk/by-label/config-2") not found. Waiting...
DEBUG    : config drive ("/dev/disk/by-label/config-2") not found. Waiting...
DEBUG    : config drive ("/dev/disk/by-label/config-2") not found. Waiting...

@rmohr
Copy link
Member Author

rmohr commented Mar 21, 2022

/cc @bgilbert

Copy link
Contributor

@bgilbert bgilbert left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM generally.

docs/supported-platforms.md Outdated Show resolved Hide resolved
internal/providers/kubevirt/kubevirt.go Outdated Show resolved Hide resolved
@bgilbert
Copy link
Contributor

You'll need to rebase to pick up changes in the list of CI jobs.

The KubeVirt platform provides config drive files compatible to the
openstack config drive like nutanix does. It provides a disk with a
`config-2` label (lower case).

Signed-off-by: Roman Mohr <rmohr@redhat.com>
Signed-off-by: Roman Mohr <rmohr@redhat.com>
Copy link
Contributor

@bgilbert bgilbert left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good!

@bgilbert bgilbert merged commit 03ea66c into coreos:main Apr 1, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants