VM Using Service Account as FilesystemΒΆ
A serviceaccount
volume references a Kubernetes serviceaccount
. A
serviceaccount
can be presented to the VM as disk or as a filesystem.
The disk method does not support dynamic change propagation and the filesystem method does not support live migration. Therefore, depending on the use-case, one or the other may be more suitable.
By using filesystem, serviceaccounts
are shared through virtiofs
. In
contrast with using disk for sharing serviceaccounts
, filesystem allows you
to dynamically propagate changes on serviceaccounts
to VMIs (i.e. the
VM does not need to be rebooted).
Limitation
Currently, VMIs cannot be live migrated since virtiofs
does not support
live migration.
Example of a VM creation using default service account:
apiVersion: kubevirt.io/v1
kind: VirtualMachineInstance
metadata:
labels:
special: vmi-fedora-sa
name: vmi-fedora
spec:
domain:
devices:
filesystems:
- name: serviceaccount-fs
virtiofs: {}
disks:
- disk:
bus: virtio
name: containerdisk
machine:
type: ""
resources:
requests:
memory: 1024M
terminationGracePeriodSeconds: 0
volumes:
- name: containerdisk
containerDisk:
image: quay.io/containerdisks/fedora:latest
- cloudInitNoCloud:
userData: |-
#cloud-config
chpasswd:
expire: false
password: fedora
user: fedora
bootcmd:
# mount the ConfigMap
- "sudo mkdir /mnt/serviceaccount"
- "sudo mount -t virtiofs serviceaccount-fs /mnt/serviceaccount"
name: cloudinitdisk
- name: serviceaccount-fs
serviceAccount:
serviceAccountName: default