Bug 1647937

Summary: kubevirt DataVolume feature gate is not enabled
Product: Container Native Virtualization (CNV) Reporter: Adam Litke <alitke>
Component: InstallationAssignee: Ryan Hallisey <rhallise>
Status: CLOSED CURRENTRELEASE QA Contact: shiyang.wang <shiywang>
Severity: high Docs Contact:
Priority: high    
Version: 1.3CC: alitke, cnv-qe-bugs, fdeutsch, fsimonce, lbednar, ncredi, rhallise, shiywang
Target Milestone: ---   
Target Release: 1.3   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: cnv-tech-preview/kubevirt-apb:v3.11-6 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2019-01-15 14:05:58 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Adam Litke 2018-11-08 15:12:58 UTC
Description of problem:

When using the release manifests to install kubevirt components we do not provide a configmap that enables the DataVolumes feature gate.  As a result, users will not be able to create VirtualMachine objects that contain datavolume template sections.

Version-Release number of selected component (if applicable): v1.3.0


How reproducible: always


Steps to Reproduce:
1. Install kubevirt using kubevirt-manifests rpm
2. Create virtual machine with datavolume template
oc create -f https://raw.githubusercontent.com/kubevirt/kubevirt/master/cluster/examples/vm-alpine-datavolume.yaml

Actual results:
The kubevirt apiserver rejects the virtual machine


Expected results:
The virtual machine should be created successfully


Additional info:

Comment 1 Adam Litke 2018-11-08 15:14:15 UTC
Assigning to Piotr as agreed in IRC.

Comment 2 Piotr Kliczewski 2018-11-08 15:28:59 UTC
Thanks Adam but this is an issue in module maintained by install team. Assigning to Ryan.

Comment 4 Fabian Deutsch 2018-11-09 12:26:34 UTC
The patch was merged yesterday. Anything else missing?

Comment 5 Ryan Hallisey 2018-11-09 16:17:36 UTC
Backport: https://github.com/kubevirt/kubevirt-ansible/pull/451

Then will pull downstream

Comment 7 Ryan Hallisey 2018-11-11 15:08:03 UTC
https://brewweb.engineering.redhat.com/brew/buildinfo?buildID=798617

brew-pulp-docker01.web.prod.ext.phx2.redhat.com:8888/cnv-tech-preview/kubevirt-apb:v3.11-1

Comment 8 Lukas Bednar 2018-11-13 11:59:19 UTC
I think that this bug is about kubevirt-manifests rpm, and fix which was created is about adding kubevirt-configmap into APB - not into kubevirt-manifests


I see that kubevirt-manifests rpm contains kubevirt-configmap, but it is under testing directory ... and enables even more than just datavolumes.

[lbednar@lbednar kubevirt]$ cat ./manifests/testing/kubevirt-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: kubevirt-config
  namespace: kube-system
  labels:
    kubevirt.io: ""
data:
  feature-gates: "DataVolumes, CPUManager, LiveMigration"


That seems to me quite confusing, and I feel little bit uncomfortable to move this bug to verified.

Ryan what do you think about it ?

Comment 9 Ryan Hallisey 2018-11-14 19:03:51 UTC
I think the apb side is done.  It will deploy the config file: /etc/ansible/roles/kubevirt-ansible/roles/kubevirt/templates/kubevirt-config.yaml where I only enabled the DataVolume feature gate. I think for future releases, it makes sense to add this to the kubevirt rpm.  The apb is setup to consume the configmap from the manifests rpm  already, so there isn't anything hacky here.

Comment 10 Nelly Credi 2018-11-22 15:57:31 UTC
@Shiyang, can you please verify?

Comment 11 Nelly Credi 2018-11-25 19:37:00 UTC
$ oc get configmap -n kube-system kubevirt-config -o yaml
apiVersion: v1
data:
  feature-gates: DataVolumes
kind: ConfigMap
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","data":{"feature-gates":"DataVolumes"},"kind":"ConfigMap","metadata":{"annotations":{},"labels":{"kubevirt.io":""},"name":"kubevirt-config","namespace":"kube-system"}}
  creationTimestamp: 2018-11-25T16:55:31Z
  labels:
    kubevirt.io: ""
  name: kubevirt-config
  namespace: kube-system
  resourceVersion: "6444"
  selfLink: /api/v1/namespaces/kube-system/configmaps/kubevirt-config
  uid: eb050111-f0d2-11e8-b81b-fa163e10cd8e

Comment 12 Nelly Credi 2018-11-25 19:46:37 UTC
ignore previous.

There is a mention to the following being enabled
  feature-gates: "DataVolumes, CPUManager, LiveMigration"
but in D/S i only see DataVolumes, while I would also expect to see CPUManager

$ oc get configmap -n kube-system kubevirt-config -o yaml
apiVersion: v1
data:
  feature-gates: DataVolumes
kind: ConfigMap
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","data":{"feature-gates":"DataVolumes"},"kind":"ConfigMap","metadata":{"annotations":{},"labels":{"kubevirt.io":""},"name":"kubevirt-config","namespace":"kube-system"}}
  creationTimestamp: 2018-11-25T16:55:31Z
  labels:
    kubevirt.io: ""
  name: kubevirt-config
  namespace: kube-system
  resourceVersion: "6444"
  selfLink: /api/v1/namespaces/kube-system/configmaps/kubevirt-config
  uid: eb050111-f0d2-11e8-b81b-fa163e10cd8e


looking at master & 0.9.2 release
https://github.com/kubevirt/kubevirt-ansible/blob/v0.9.2/roles/kubevirt/templates/kubevirt-config.yaml

Comment 13 Fabian Deutsch 2018-11-26 09:45:18 UTC
For 1.3 we went with only enabling the DataVolumes feature-gate in order to avoid validation of CPU Manager and live migration.

Those additional feature gates will be opened once the features land in a release.

Comment 14 Ryan Hallisey 2018-11-26 11:58:42 UTC
Like Fabian said, we only expect the DataVolumes feature-gate.

Comment 15 Nelly Credi 2018-11-26 11:59:42 UTC
agreed.