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 addon #8275

Merged
merged 1 commit into from
Jun 3, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions deploy/addons/kubevirt/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
## kubevirt Addon
Copy link
Member

@medyagh medyagh May 26, 2020

Choose a reason for hiding this comment

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

@ashleyschuett
thank you for adding this readme, could u please this read me to our site section ?
maybe under tutorials ?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Hey, I added the readme under the tutorials section. Would you like the readme in the deploy folder to be removed, or is it okay for it to live in both places?

Copy link
Member

Choose a reason for hiding this comment

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

thank you we can have a readme in the addon folder but with a link to the website, so anyone goes to that can find out where is the tutorial for this addon.

[kubevirt](https://kubevirt.io/) - KubeVirt technology addresses the needs of development teams that have adopted or want to adopt Kubernetes but possess existing Virtual Machine-based workloads that cannot be easily containerized.

More info can be found by reading the tutorial ["How to use KubeVirt with minikube"](https://minikube.sigs.k8s.io/docs/tutorials/kubevirt/)
77 changes: 77 additions & 0 deletions deploy/addons/kubevirt/pod.yaml.tmpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
apiVersion: v1
kind: ConfigMap
metadata:
namespace: kube-system
name: kubevirt-scripts
labels:
kubernetes.io/minikube-addons: kubevirt
addonmanager.kubernetes.io/mode: Reconcile
data:
uninstall.sh: |
#!/bin/bash

kubectl delete -f /manifests/kubevirt.yaml

kubectl delete -f /manifests/kubevirt-base.yaml

install.sh: |
#!/bin/bash

export KUBEVIRT_VERSION=$(curl -s https://api.github.com/repos/kubevirt/kubevirt/releases | grep tag_name | grep -v -- - | sort -V | tail -1 | awk -F':' '{print $2}' | sed 's/,//' | xargs)
Copy link
Contributor

Choose a reason for hiding this comment

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

Ha. Nifty, nice to see that this is not the naive approach of retrieving the highest version :)

echo $KUBEVIRT_VERSION

curl -Ls "https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/kubevirt-operator.yaml" -o /manifests/kubevirt-base.yaml

kubectl create -f /manifests/kubevirt-base.yaml

EMULATION=$(egrep 'svm|vmx' /proc/cpuinfo)
if [ -z "$EMULATION" ]; then
echo "use emulation"
kubectl create configmap kubevirt-config -n kubevirt --from-literal debug.useEmulation=true
fi;

curl -sL "https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/kubevirt-cr.yaml" -o /manifests/kubevirt.yaml

kubectl create -f /manifests/kubevirt.yaml

sleep infinity
---
apiVersion: v1
kind: Pod
metadata:
labels:
kubernetes.io/minikube-addons: kubevirt
addonmanager.kubernetes.io/mode: Reconcile
name: kubevirt-install-manager
namespace: kube-system
spec:
containers:
- command:
- /bin/bash
- -c
- /kubevirt-scripts/install.sh
image: bitnami/kubectl:1.17
imagePullPolicy: IfNotPresent
name: kubevirt-provisioner
lifecycle:
preStop:
exec:
command:
- /bin/bash
- -c
- /kubevirt-scripts/uninstall.sh
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /manifests
name: tmp
- mountPath: /kubevirt-scripts
name: kubevirt-scripts
terminationGracePeriodSeconds: 60
volumes:
- name: tmp
emptyDir: {}
- name: kubevirt-scripts
configMap:
defaultMode: 0777
name: kubevirt-scripts
5 changes: 5 additions & 0 deletions pkg/addons/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,11 @@ var Addons = []*Addon{
set: SetBool,
callbacks: []setFn{enableOrDisableAddon},
},
{
name: "kubevirt",
set: SetBool,
callbacks: []setFn{enableOrDisableAddon},
},
{
name: "logviewer",
set: SetBool,
Expand Down
8 changes: 8 additions & 0 deletions pkg/minikube/assets/addons.go
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,14 @@ var Addons = map[string]*Addon{
"0640",
false),
}, false, "istio"),
"kubevirt": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/kubevirt/pod.yaml.tmpl",
vmpath.GuestAddonsDir,
"pod.yaml",
"0640",
false),
}, false, "kubevirt"),
"metrics-server": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/metrics-server/metrics-apiservice.yaml.tmpl",
Expand Down
42 changes: 42 additions & 0 deletions site/content/en/docs/tutorials/kubevirt.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
---
title: "How to use KubeVirt with minikube"
linkTitle: "KubeVirt support"
weight: 1
date: 2020-05-26
description: >
Using KubeVirt with minikube
---

## Prerequisites

- kvm2 driver

### Enable KubeVirt on minikube
Minikube can be started with default values and those will be enough to run a quick example, that being said, if you can spare a few more GiBs of RAM (by default it uses 2GiB), it’ll allow you to experiment further.

We’ll create a profile for KubeVirt so it gets its own settings without interfering what any configuration you might have already, let’s start by increasing the default memory to 4GiB:

```shell script
minikube config -p kubevirt set memory 4096
minikube config -p kubevirt set vm-driver kvm2
minikube start -p kubevirt
```

To enable this addon, simply run:
```shell script
minikube addons enable kubevirt
```

In a minute or so kubevirt's default components will be installed into your cluster.
You can run `kubectl get pods -n kubevirt` to see the progress of the kubevirt installation.


### Disable KubeVirt
To disable this addon, simply run:
```shell script
minikube addons disable kubevirt
```

### More Information

See official [Minikube Quickstart](https://kubevirt.io/quickstart_minikube/) documentation for more information and to install KubeVirt without using the addon.