diff --git a/Makefile b/Makefile index ef76a4ab058a..c68d9f0a33b5 100755 --- a/Makefile +++ b/Makefile @@ -300,15 +300,13 @@ $(ISO_BUILD_IMAGE): deploy/iso/minikube-iso/Dockerfile @echo "" @echo "$(@) successfully built" -out/storage-provisioner-main: cmd/storage-provisioner/main.go +storage-provisioner-main: cmd/storage-provisioner/main.go go build cmd/storage-provisioner/main.go .PHONY: storage-provisioner-image -storage-provisioner-image: out/storage-provisioner-main +storage-provisioner-image: storage-provisioner-main docker build -t $(REGISTRY)/storage-provisioner:$(TAG) -f deploy/storage-provisioner/Dockerfile . gcloud docker -- push $(REGISTRY)/storage-provisioner:$(TAG) - # docker build -t gcr.io/priya-wadhwa/storage-provisioner:$(TAG) -f deploy/storage-provisioner/Dockerfile . - # gcloud docker -- push gcr.io/priya-wadhwa/storage-provisioner:$(TAG) .PHONY: release-iso release-iso: minikube_iso checksum diff --git a/cmd/localkube/cmd/start.go b/cmd/localkube/cmd/start.go index 88c2d50d9abb..9669d9a769c9 100644 --- a/cmd/localkube/cmd/start.go +++ b/cmd/localkube/cmd/start.go @@ -139,6 +139,4 @@ func SetupServer(s *localkube.LocalkubeServer) { proxy := s.NewProxyServer() s.AddServer(proxy) - storageProvisioner := s.NewStorageProvisionerServer() - s.AddServer(storageProvisioner) } diff --git a/deploy/addons/storage-provisioner/storage-provisioner.yaml b/deploy/addons/storage-provisioner/storage-provisioner.yaml new file mode 100644 index 000000000000..71e7baa7e18e --- /dev/null +++ b/deploy/addons/storage-provisioner/storage-provisioner.yaml @@ -0,0 +1,29 @@ +# Copyright 2016 The Kubernetes Authors All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Pod +metadata: + name: storage-provisioner + namespace: kube-system + labels: + integration-test: storage-provisioner + addonmanager.kubernetes.io/mode: Reconcile + kubernetes.io/minikube-addons: storage-provisioner +spec: + hostNetwork: true + containers: + - name: storage-provisioner + image: gcr.io/k8s-minikube/storage-provisioner:v1.8.0 + imagePullPolicy: IfNotPresent diff --git a/pkg/minikube/assets/addons.go b/pkg/minikube/assets/addons.go index 43d5d6d895ae..43a88bc9c12b 100644 --- a/pkg/minikube/assets/addons.go +++ b/pkg/minikube/assets/addons.go @@ -82,6 +82,13 @@ var Addons = map[string]*Addon{ "storageclass.yaml", "0640"), }, true, "default-storageclass"), + "storage-provisioner": NewAddon([]*BinDataAsset{ + NewBinDataAsset( + "deploy/addons/storage-provisioner/storage-provisioner.yaml", + constants.AddonsPath, + "storage-provisioner.yaml", + "0640"), + }, true, "storage-provisioner"), "coredns": NewAddon([]*BinDataAsset{ NewBinDataAsset( "deploy/addons/coredns/coreDNS-controller.yaml", diff --git a/test/integration/pv_test.go b/test/integration/pv_test.go index 29c8013d1047..ec09c46a91cf 100644 --- a/test/integration/pv_test.go +++ b/test/integration/pv_test.go @@ -20,12 +20,15 @@ package integration import ( "fmt" + "github.com/pkg/errors" "path/filepath" "testing" "time" + "k8s.io/apimachinery/pkg/labels" "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/apis/storage" + commonutil "k8s.io/minikube/pkg/util" "k8s.io/minikube/test/integration/util" ) @@ -58,6 +61,25 @@ func testProvisioning(t *testing.T) { t.Fatalf("No default storage class: %s", err) } + // Check that the storage provisioner pod is running + + checkPodRunning := func() error { + client, err := commonutil.GetClient() + if err != nil { + return errors.Wrap(err, "getting kubernetes client") + } + selector := labels.SelectorFromSet(labels.Set(map[string]string{"integration-test": "storage-provisioner"})) + + if err := commonutil.WaitForPodsWithLabelRunning(client, "kube-system", selector); err != nil { + return err + } + return nil + } + + if err := checkPodRunning(); err != nil { + t.Fatal("Check storage-provisioner pod running failed with error: ", err) + } + // Now create the PVC pvcPath := filepath.Join(*testdataDir, "pvc.yaml") if _, err := kubectlRunner.RunCommand([]string{"create", "-f", pvcPath}); err != nil {