Unified
Split
Showing
1,694 changed files
with
94,439 additions
and 27,341 deletions.
| @@ -3090,8 +3090,7 @@ | ||
| "description": "APIGroup contains the name, the supported versions, and the preferred version of a group.", | ||
| "required": [ | ||
| "name", | ||
| "versions", | ||
| "serverAddressByClientCIDRs" | ||
| "versions" | ||
| ], | ||
| "properties": { | ||
| "apiVersion": { | ||
| @@ -4001,13 +4000,17 @@ | ||
| } | ||
| }, | ||
| "v1.NodeSelectorTerm": { | ||
| "description": "A null or empty node selector term matches no objects.", | ||
| "required": [ | ||
| "matchExpressions" | ||
| ], | ||
| "description": "A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.", | ||
| "properties": { | ||
| "matchExpressions": { | ||
| "description": "Required. A list of node selector requirements. The requirements are ANDed.", | ||
| "description": "A list of node selector requirements by node's labels.", | ||
| "type": "array", | ||
| "items": { | ||
| "$ref": "#/definitions/v1.NodeSelectorRequirement" | ||
| } | ||
| }, | ||
| "matchFields": { | ||
| "description": "A list of node selector requirements by node's fields.", | ||
| "type": "array", | ||
| "items": { | ||
| "$ref": "#/definitions/v1.NodeSelectorRequirement" | ||
| @@ -17,6 +17,7 @@ objects: | ||
| creationTimestamp: null | ||
| labels: | ||
| kubevirt-vm: vm-${NAME} | ||
| kubevirt.io/os: fedora27 | ||
| name: ${NAME} | ||
| spec: | ||
| running: false | ||
| @@ -25,6 +26,7 @@ objects: | ||
| creationTimestamp: null | ||
| labels: | ||
| kubevirt-vm: vm-${NAME} | ||
| kubevirt.io/os: fedora27 | ||
| spec: | ||
| domain: | ||
| cpu: | ||
| @@ -17,6 +17,7 @@ objects: | ||
| creationTimestamp: null | ||
| labels: | ||
| kubevirt-vm: vm-${NAME} | ||
| kubevirt.io/os: rhel-7.4 | ||
| name: ${NAME} | ||
| spec: | ||
| running: false | ||
| @@ -25,6 +26,7 @@ objects: | ||
| creationTimestamp: null | ||
| labels: | ||
| kubevirt-vm: vm-${NAME} | ||
| kubevirt.io/os: rhel-7.4 | ||
| spec: | ||
| domain: | ||
| cpu: | ||
| @@ -17,6 +17,7 @@ objects: | ||
| creationTimestamp: null | ||
| labels: | ||
| kubevirt-vm: vm-${NAME} | ||
| kubevirt.io/os: win2k12r2 | ||
| name: ${NAME} | ||
| spec: | ||
| running: false | ||
| @@ -25,6 +26,7 @@ objects: | ||
| creationTimestamp: null | ||
| labels: | ||
| kubevirt-vm: vm-${NAME} | ||
| kubevirt.io/os: win2k12r2 | ||
| spec: | ||
| domain: | ||
| clock: | ||
| @@ -0,0 +1,27 @@ | ||
| # Local Kubernets Provider | ||
| This provider allows developing against bleeding-edge Kubernetes code. The | ||
| k8s sources will be compiled and a single-node cluster will be started. | ||
| ## Bringing the cluster up | ||
| First get the k8s sources: | ||
| ```bash | ||
| go get -u -d k8s.io/kubernetes | ||
| ``` | ||
| Then compile and start the cluster: | ||
| ```bash | ||
| export KUBEVIRT_PROVIDER=local | ||
| make cluster-up | ||
| ``` | ||
| The cluster can be accessed as usual: | ||
| ```bash | ||
| $ cluster/kubectl.sh get nodes | ||
| NAME STATUS ROLES AGE VERSION | ||
| kubdev Ready <none> 5m20s v1.12.0-beta.2 | ||
| ``` |
| @@ -40,7 +40,9 @@ EOF | ||
| } | ||
| function build() { | ||
| make manifests docker | ||
| ${KUBEVIRT_PATH}hack/dockerized "DOCKER_TAG=${DOCKER_TAG} | ||
| KUBEVIRT_PROVIDER=${KUBEVIRT_PROVIDER} ./hack/build-manifests.sh" | ||
| make docker | ||
| } | ||
| function _kubectl() { | ||
| @@ -21,6 +21,9 @@ package main | ||
| import ( | ||
| klog "kubevirt.io/kubevirt/pkg/log" | ||
| _ "kubevirt.io/kubevirt/pkg/monitoring/client/prometheus" // import for prometheus metrics | ||
| _ "kubevirt.io/kubevirt/pkg/monitoring/reflector/prometheus" // import for prometheus metrics | ||
| _ "kubevirt.io/kubevirt/pkg/monitoring/workqueue/prometheus" // import for prometheus metrics | ||
| "kubevirt.io/kubevirt/pkg/service" | ||
| "kubevirt.io/kubevirt/pkg/virt-api" | ||
| ) | ||
| @@ -20,6 +20,9 @@ | ||
| package main | ||
| import ( | ||
| _ "kubevirt.io/kubevirt/pkg/monitoring/client/prometheus" // import for prometheus metrics | ||
| _ "kubevirt.io/kubevirt/pkg/monitoring/reflector/prometheus" // import for prometheus metrics | ||
| _ "kubevirt.io/kubevirt/pkg/monitoring/workqueue/prometheus" // import for prometheus metrics | ||
| "kubevirt.io/kubevirt/pkg/virt-controller/watch" | ||
| ) | ||
| @@ -21,10 +21,13 @@ package main | ||
| import ( | ||
| "fmt" | ||
| "io/ioutil" | ||
| "net/http" | ||
| "os" | ||
| "time" | ||
| "github.com/golang/glog" | ||
| "github.com/prometheus/client_golang/prometheus/promhttp" | ||
| flag "github.com/spf13/pflag" | ||
| k8sv1 "k8s.io/api/core/v1" | ||
| "k8s.io/apimachinery/pkg/fields" | ||
| @@ -34,11 +37,18 @@ import ( | ||
| "k8s.io/client-go/tools/cache" | ||
| "k8s.io/client-go/tools/record" | ||
| "kubevirt.io/kubevirt/pkg/util" | ||
| "kubevirt.io/kubevirt/pkg/certificates" | ||
| "kubevirt.io/kubevirt/pkg/api/v1" | ||
| "kubevirt.io/kubevirt/pkg/controller" | ||
| inotifyinformer "kubevirt.io/kubevirt/pkg/inotify-informer" | ||
| "kubevirt.io/kubevirt/pkg/kubecli" | ||
| "kubevirt.io/kubevirt/pkg/log" | ||
| _ "kubevirt.io/kubevirt/pkg/monitoring/client/prometheus" // import for prometheus metrics | ||
| _ "kubevirt.io/kubevirt/pkg/monitoring/reflector/prometheus" // import for prometheus metrics | ||
| _ "kubevirt.io/kubevirt/pkg/monitoring/workqueue/prometheus" // import for prometheus metrics | ||
| "kubevirt.io/kubevirt/pkg/service" | ||
| "kubevirt.io/kubevirt/pkg/virt-handler" | ||
| virtcache "kubevirt.io/kubevirt/pkg/virt-handler/cache" | ||
| @@ -141,11 +151,30 @@ func (app *virtHandlerApp) Run() { | ||
| maxDevices, | ||
| ) | ||
| certsDirectory, err := ioutil.TempDir("", "certsdir") | ||
| if err != nil { | ||
| panic(err) | ||
| } | ||
| defer os.RemoveAll(certsDirectory) | ||
| namespace, err := util.GetNamespace() | ||
| if err != nil { | ||
| glog.Fatalf("Error searching for namespace: %v", err) | ||
| } | ||
| certStore, err := certificates.GenerateSelfSignedCert(certsDirectory, "virt-handler", namespace) | ||
| if err != nil { | ||
| glog.Fatalf("unable to generate certificates: %v", err) | ||
| } | ||
| // Bootstrapping. From here on the startup order matters | ||
| stop := make(chan struct{}) | ||
| defer close(stop) | ||
| go vmController.Run(3, stop) | ||
| vmController.Run(3, stop) | ||
| http.Handle("/metrics", promhttp.Handler()) | ||
| err = http.ListenAndServeTLS(app.ServiceListen.Address(), certStore.CurrentPath(), certStore.CurrentPath(), nil) | ||
| if err != nil { | ||
| log.Log.Reason(err).Error("Serving prometheus failed.") | ||
| panic(err) | ||
| } | ||
| } | ||
| func (app *virtHandlerApp) AddFlags() { | ||
| @@ -29,5 +29,4 @@ if ! [ -S "$SOCKET" ]; then | ||
| exit 1 | ||
| fi | ||
| stty -echo | ||
| socat unix-connect:/$SOCKET stdio,cfmakeraw | ||
| socat unix-connect:/$SOCKET stdio | ||
Oops, something went wrong.